IT Share you

NSDateFormatter에서 'YYYY'와 'yyyy'의 차이점

shareyou 2020. 12. 1. 20:00
반응형

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

여기로에 결과 datedatee내가 이해하는,하지만 왜 일 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 +0000NSLog의 날짜 2, 이상한 결과를 확인하십시오.


또한 날짜 형식 문자열을 사용할 때 올바른 형식을 사용하는 것이 중요합니다.

@ "YYYY"는 주 기준 역년입니다.

@ "yyyy"는 일반적인 역년입니다.

블로그 전체를 살펴볼 수 있습니다. 살펴보기에 좋습니다.

http://realmacsoftware.com/blog/working-with-date-and-time


일반적인 실수는 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

반응형