2011-11-23 43 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]; ?

相关问题