2016-08-12 1 views
1

12 시간을 24로 변환하지만 완벽한 시간을 얻지 못했습니다. 여기 코드입니다 :12 시간에서 24 시간으로 변환

NSString *dateStr = @"2016-08-12T04:10:14.915Z"; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"]; 
    [dateFormat setTimeZone:[NSTimeZone localTimeZone]]; 
    NSDate *date = [dateFormat dateFromString:dateStr]; 

내 마지막 날짜는

2016-08-11 22:40:14 +0000 

어떻게?

+0

HH = 24시, HH = 12 시간 확인, 그래서 변화 'YYYY-MM-dd'T'HH 시도 : mm를 : ss.SSS'Z를' '~'yyyy-MM-dd'T'hh : mm : ss.SSS'Z'' – Tj3n

+0

업데이트 된 qun을 참조하십시오. – Kabali

+0

무엇이 문제가 되셨습니까 –

답변

0

받고있는 NSDate 개체는 GMT입니다. 프랑스 GMT -2에서는 코드를 실행하면 02:10의 시간을 갖습니다.

GMT 오프셋이 -5 : 30이라고 가정합니다.

NSDate 개체에는 시간대가 없습니다. 그들은 절대적으로 순간을 나타냅니다. 그러나 설명을 요청하면 (예 : ) NSLog에 인쇄하면 시간대를 선택해야합니다. 대부분 합리적인 "기본"선택은 GMT입니다. 그리니치 표준시가 아닌 경우 날짜가 잘못된 것으로 보입니다.

항상 NSDateFormatter를 사용하여 날짜를 표시하기 전에 시간대를 으로 설정해야합니다.

NSDate에 대해 NSLog 또는 debbuger가 말하는 것을 신뢰하지 마십시오. 사용

NSString dateAsString = [dateFormat stringFromDate:date]; 

는 날짜 :

+0

네, 맞습니다. – Kabali

+0

[NSTimeZone localTimeZone]에 설정된 NSDateFormatter를 사용하여 나중에 날짜를 인쇄하면 04:10에 올바르게 설정됩니다. –

+0

dateformate에서 이미 localTimeZone을 사용하고 있습니다. – Kabali