我有這樣一段代碼:目標c - NSDateFormatter返回錯誤的日期
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM d, YYYY"];
NSDate *formatDate = [dateFormat dateFromString:self.date];
NSLog(@"1-%@", self.date);
NSLog(@"2-%@", formatDate);
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:formatDate];
NSString *dateCal = [NSString stringWithFormat:@"%d/%d/%d", [components day], [components month], [components year]];
NSLog(@"3-%@", dateCal);
milage.date = dateCal;
第一的NSLog返回:
1-2012年3月23日
第二種:
2-2011-12-25 00:00:00 +0000
第三個:
3-25/12/2011
爲什麼從字符串獲取日期並格式化日期時會發生變化?我期待第三次NSLog(或dateCal)等於23/3/2012。我住在英國所以它不是做的時區..
感謝,
傑克
我很驚訝,你看 「2012年3月23日,」 當你的NSLog self.date。在我的機器上,NSLog(@「%@」,[NSDate date]);產生一個像「2012-03-23 14:47:48 +0000」的日期。 – danh 2012-03-23 14:50:13
謝謝,只需要使用'yyyy'代替。 – 2012-03-23 14:51:25
這是一個測試,看看這個條件是否成立[self.date timeIntervalSinceReferenceDate] == [formatDate timeIntervalSinceReferenceDate]。 (醜陋的格式,很抱歉,但由於這不是一個真正的答案,我想它應該是一個評論)。 – danh 2012-03-23 14:52:34