为什么NSDate报告日期不正确?

5

这是我的代码。

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

我得到的是2011-07-19而不是2011-07-18。你有什么想法可能是问题所在?


你所在的时区是什么,获取日期的设备所在的时区又是什么? - Peter M
还要在操作系统中验证服务器的实际系统时间。 - Randy
我的时区设置为东部时区。我Mac上的当前日期是2011年7月18日星期一。此外,我正在模拟器中运行我的应用程序。 - David
2个回答

11

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

通常解决这个问题的方式是使用NSDateFormatter,并在必要时明确设置时区。


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

谢谢,那正是我所做的。 - David

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