为什么NSDate报错日期?

时间:2011-07-19 02:03:25

标签: iphone nsdate

这是我的代码。

NSDate *today = [NSDate date];        
NSString *todayString = [[today description] substringToIndex:10];
NSLog(@"Today: %@", todayString);

我得到2011-07-19而不是2011-07-18。关于可能出现什么问题的任何想法?

2 个答案:

答案 0 :(得分:10)

NSDate的description方法返回UTC时间,如果您在夏令时期间在美国东部时区,则比您的挂钟时间晚4小时。换句话说,在晚上10点,你的时间是UTC的第二天凌晨2点。

解决此问题的常用方法是改用NSDateFormatter,并在必要时明确设置时区。

答案 1 :(得分:6)

NSDate *today = [NSDate date];
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
NSString *dateString = [dateFormat stringFromDate:today];