我已经和他坐在一起很长一段时间了。我能够弄明白,我做错了什么。
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?我做错了什么?
答案 0 :(得分: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);
输出:
2011-11-23 14:22:10.924 xxx [23235:207] 2011-11-21 23:20:00 +0000
答案 1 :(得分:1)
我想你可能会在这次讨论中找到答案。显然,NSDateFormatter喜欢使用用户的设置,这可能不合适。
http://developer.apple.com/library/ios/#qa/qa1480/_index.html
虽然我认为这个答案是为了阻止24小时的行为,这就是你想强迫的。
我想说你想让setLocale部分正确。
ETA:以下是有关此内容的更多信息:
https://stackoverflow.com/q/7538489/290072
这将允许您的代码检测设备是否会尝试12小时或24小时。
答案 2 :(得分:0)
如果通过[server DateFormatter stringFromDate:serverDate]输出,该怎么办? ?