2011-11-23 28 views
0

現在我已經坐了很久。我總能弄清楚,我做錯了什麼。NSDateFormatter忽略了24小時的時間格式

NSString * dateString = @"2011-11-21 13:00"; 
NSDateFormatter *serverDateFormatter = [[NSDateFormatter alloc] init]; 
[serverDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 
NSDate *serverDate = [serverDateFormatter dateFromString:dateString]; 

NSLog(@"%@", serverDate); 

輸出:

2011-11-21 12:00:00 +0000

爲何13:00被轉換至12:00?我究竟做錯了什麼?

回答

2

需要設置的時區,例如

NSString * dateString = @"2011-11-21 23:20"; 
NSDateFormatter *serverDateFormatter = [[NSDateFormatter alloc] init]; 
[serverDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 
[serverDateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
NSDate *serverDate = [serverDateFormatter dateFromString:dateString]; 
NSLog(@"%@", serverDate); 

OUTPUT:

2011-11-23 14:22:10.924 XXX [23235:207] 2011-11-21 23時20 :00 +0000

1

我想你可能會在這個討論中找到答案。顯然,NSDateFormatter喜歡使用用戶的設置,這可能不合適。

http://developer.apple.com/library/ios/#qa/qa1480/_index.html

雖然我覺得這個答案是停止24小時的行爲,這是你要強迫什麼。

我想說你想要setLocale部分的權利。

埃塔:這裏有一些這方面的詳細信息:

https://stackoverflow.com/q/7538489/290072

這將使你的代碼來檢測設備是否會盡量做到12周小時或24小時的時間。

+0

dint work。我也設置了NSLocale。仍然給我相同的輸出 – Neelesh

+1

你設置了什麼? – Almo

0

如果你輸出通過[serverDateFormatter stringFromDate:serverDate]; ?

相關問題