NSDateFormatter에서 'YYYY'와 'yyyy'의 차이점
'YYYY'와 'yyyy'의 정확한 차이점은 무엇입니까? 내가 읽어 링크 , 그것은한다고
일반적인 실수는 YYYY를 사용하는 것입니다. yyyy는 달력 연도를 지정하고 YYYY는 ISO 연도-주 달력에 사용되는 연도 ( "연도")를 지정합니다. 대부분의 경우 yyyy와 YYYY는 동일한 숫자를 산출하지만 다를 수 있습니다. 일반적으로 역년을 사용해야합니다.
하지만 내가 사용하려고 할 때
NSString *stringDate = @"Feb 28, 2013 05:30pm";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd, yyyy hh:mma"];
NSDate *date=[dateFormatter dateFromString:stringDate];
NSLog(@"Date 1 : %@",date); //2013-02-28 12:00:00 +0000
NSString *stringDatee = @"Feb 28, 2013 05:30pm";
NSDateFormatter *dateFormatterr = [[NSDateFormatter alloc] init];
[dateFormatterr setDateFormat:@"MMM dd, YYYY hh:mma"];
NSDate *datee=[dateFormatterr dateFromString:stringDatee];
NSLog(@"Date 2 : %@",datee); //2013-01-05 12:00:00 +0000
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, YYYY hh:mma"];
NSString *dateString = [dateFormat stringFromDate:datee];
NSLog(@"date 3 : %@", dateString); //Jan 05, 2013 05:30PM
여기로에 결과 date
와 datee
내가 이해하는,하지만 왜 일 2 일 3의 결과는 다른, 다른? 문자열에서 날짜를 만들고 다시 문자열로 되돌릴 때 출력이 일치하지 않습니까?
아무도 같은 이유를 알고 있습니까?. 주를 지정하지만 여전히 결과는 동일해야합니다.
감사..
편집하다 :-
내가 코딩하면
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, YYYY hh:mma"];
NSString *dateString = [dateFormatterr stringFromDate:[NSDate date]];
NSLog(@"date: %@", dateString); //Feb 28, 2013 04:37PM
결과가 나에게 적절한 결과이지만 내가 얻은 날짜까지 문자열로 전달하는 것과 동일한 경우 2013-01-05 12:00:00 +0000
NSLog의 날짜 2, 이상한 결과를 확인하십시오.
또한 날짜 형식 문자열을 사용할 때 올바른 형식을 사용하는 것이 중요합니다.
@ "YYYY"는 주 기준 역년입니다.
@ "yyyy"는 일반적인 역년입니다.
블로그 전체를 살펴볼 수 있습니다. 살펴보기에 좋습니다.
일반적인 실수는 YYYY를 사용하는 것입니다. yyyy는 달력 연도를 지정하고 YYYY는 ISO 연도-주 달력에 사용되는 연도 ( "연도")를 지정합니다. 대부분의 경우 yyyy와 YYYY는 동일한 숫자를 산출하지만 다를 수 있습니다. 일반적으로 역년을 사용해야합니다.
에서 애플 문서
dd/MMM/YYYY - e.g.:1 01/Jan/2000; answer : 19/dec/1999
(see weekly calendar December month last Monday
suppose leaf year + 1 day)
dd/MMM/yyyy - eg: ordinary - no problem.
모든 답변은 차별화 yyyy
되며 YYYY
다른 질문에 대한 정답입니다. 질문 자체는 다른 것을 말합니다.
이 두 값이 다른 이유는 무엇입니까? (질문에서 발췌)
NSLog(@"Date 2 : %@",datee); //2013-01-05 12:00:00 +0000
NSLog(@"Date 3 : %@", dateString); //Jan 05, 2013 05:30PM
@PJ의 대답은 가치가 실제로 다르지 않다는 것입니다. NSDate (날짜 2)를 기록하면 UTC Timezone 에있는 객체에 대한 전체 설명을 얻게 됩니다. 이 논리는 Date 3을 로깅 할 때 이미 문자열로 변환되어 시간대가 적용 되었기 때문에 발생하지 않습니다.
날짜 3을 인쇄하려면 날짜 2를 얻는 것과 '동일한 방식'으로 날짜 3을 지정해야합니다. 다음과 같이됩니다.
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, YYYY hh:mma"];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSString *dateString = [dateFormat stringFromDate:datee];
NSLog(@"date 3 : %@", dateString);
도움이 되었기를 바랍니다.
tl; dr 시간대
참고URL : https://stackoverflow.com/questions/15133549/difference-between-yyyy-and-yyyy-in-nsdateformatter
'IT Share you' 카테고리의 다른 글
location.href 속성 대 location.assign () 메서드 (0) | 2020.12.01 |
---|---|
그놈 쉘 확장을 작성하기위한 문서 (0) | 2020.12.01 |
부모를 채우기 위해 인라인 블록 요소의 높이 가져 오기 (0) | 2020.12.01 |
부동 소수점 변수의 범위가 값에 영향을 줍니까? (0) | 2020.12.01 |
AssertionError 란 무엇입니까? (0) | 2020.12.01 |