2010-10-06 82 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;