2010-10-06 78 views
8

在我的iPhone应用程序中,我试图从Web服务接收日期字符串获取EEE MMM dd。NSDateFormatter返回日期由一天

对于时间为< 07:00的所有日期,NSDateFormatter会将日期返回1天。例如:要格式化的日期:2010-11-17T05:00:00,格式化的日期结果:星期二11月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];

可能是什么问题呢?

+0

你住在哪里,Web服务使用哪个时区? – Yuji 2010-10-06 23:14:05

回答

10

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

+0

嗯,所以我将时区属性设置为localTimeZone。但结果仍然相同。当时间早上7点多时,它就可以工作。但在此之前的任何事情都会导致日期回落一天。 – Mansi 2010-10-06 22:19:22

+4

这是修正:[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@“GMT”]]; – Mansi 2010-10-06 23:50:34

2

我有这个相同的问题,但只有更新到iOS4后。我的格式是这样的:

[aDateFormatter setDateFormat:@ “YYYY-MM-DD HH:MM:SS Z”];

和我的日期是这样的:

2009-10-27 7时30分十二秒-0700

我只是设法通过移动日期选择器模式设置来解决该问题之前将最大/最小/选定日期应用于日期选择器。在我这种情况下:

aDatePicker.datePickerMode = UIDatePickerModeDate;