NSDateFormatter 返回的日期相差一天

8
在我的iPhone应用中,我试图从收到的日期字符串中获取EEE MMM dd。对于所有时间早于07:00的日期,NSDateFormatter返回的日期会晚一天。例如:格式化前的日期:2010-11-17T05:00:00,格式化后的日期为:Tue Nov 16。
以下是代码片段: NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"EEE MMM dd"]; NSDate *dateToFormat = [NSDate dateWithNaturalLanguageString:dateStringToFormat locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]]; NSString *formattedDateString = [dateFormat stringFromDate:dateToFormat]; [dateFormat release]; 问题可能出在哪里?

你住在哪里,这个 Web 服务使用哪个时区? - Yuji
2个回答

10

可能与时区有关。您可能需要为NSDateFormatter对象的timeZone属性设置适当的值。


嗯,所以我将时区属性设置为本地时区。但结果仍然相同。当时间超过早上7点时,它可以正常工作。但在此之前的任何时间,都会导致日期向后推一天。 - kelkarm
4
这是修复方法:[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 该代码意思为将日期格式的时区设置为GMT。 - kelkarm

2
我遇到了同样的问题,但只是在升级到iOS4之后。我的格式化程序如下:
[aDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
我的日期格式如下:
2009-10-27 7:30:12 -0700
我成功地解决了这个问题,只需将日期选择器模式设置在应用最大/最小/选定日期之前即可。在我的情况下,代码如下:
aDatePicker.datePickerMode = UIDatePickerModeDate;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接