NSDateFormatter - 没有获得正确的格式化程序字符串

时间:2011-04-19 21:22:38

标签: iphone objective-c cocoa-touch ios nsdateformatter

我收到NSDateFormatter返回的错误的格​​式化日期字符串。这是我的代码:

NSDateFormatter *aDateFormatter = [[NSDateFormatter alloc] init];
[aDateFormatter setDateFormat:@"dd-MM-yy HH:mm:ss"];
NSString *aFormattedElapsedTime = [aDateFormatter stringFromDate:refDate];

下面, refDate(NSDate对象)= 1970-01-01 00:36:22 +0000

我得到的输出是“16h:36m:22s”而不是“00h:36m:22s”。

我在这里做错了吗?

3 个答案:

答案 0 :(得分:2)

NSDateFormatter将默认为系统上的当前时区,除非您使用setTimeZone进行设置。

[aDateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

查看NSDateFormatter to NSString?

答案 1 :(得分:1)

尝试设置时区。 (见上面的评论)

NSDateFormatter *aDateFormatter = [[NSDateFormatter alloc] init];
[aDateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]
[aDateFormatter setDateFormat:@"dd-MM-yy HH:mm:ss"];
NSString *aFormattedElapsedTime = [aDateFormatter stringFromDate:refDate];

答案 2 :(得分:0)

除了生活在太平洋时间,不是真的。在那里添加您的时区偏移量,您就会明白为什么要获得该值:NSDateFormatter将日期格式设置为在当地时间解释,而不是UTC