Ios NSDateFormatter错误的日期
简单到Ios NSDateFormatter错误的日期,ios,nsdateformatter,Ios,Nsdateformatter,简单到 NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"dd/MM/yyyy"]; NSLog(@"Current date in event %@ %@",currentDate,[df stringFromDate:currentDate]); 但是在日志中 Current date in event 2013-10-01 22:00:00 +0000
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd/MM/yyyy"];
NSLog(@"Current date in event %@ %@",currentDate,[df stringFromDate:currentDate]);
但是在日志中
Current date in event 2013-10-01 22:00:00 +0000 02/10/2013
为什么?当您记录
NSDate
时,它总是以UTC时间打印。使用stringFromDate:
时,除非更改日期格式化程序的时区,否则将获得本地时间的日期
在这种情况下,您的时区比UTC早两个小时(假设您在意大利)
由于NSDate
对象是2013年10月1日UTC 22:00,因此这与2013年10月2日UTC+2的午夜相同。这就是为什么你会看到显示10月2日的字符串
这是另一种看待它的方式。您没有看到1天的差异。由于时区的不同,你实际上看到了2小时的差异。从午夜到凌晨2点,您将看到1天的差异。当您记录
NSDate
时,它总是以UTC时间打印。使用stringFromDate:
时,除非更改日期格式化程序的时区,否则将获得本地时间的日期
在这种情况下,您的时区比UTC早两个小时(假设您在意大利)
由于NSDate
对象是2013年10月1日UTC 22:00,因此这与2013年10月2日UTC+2的午夜相同。这就是为什么你会看到显示10月2日的字符串
这是另一种看待它的方式。您没有看到1天的差异。由于时区的不同,你实际上看到了2小时的差异。从午夜到凌晨2点,您将看到一天的差异。如果您的时区比UTC时间早两个或更多小时(这是因为您在意大利)。为什么?为什么打印currentDate不同于打印stringFromDate:?问题在于日期:有1天的差异!早上运行它,就不会有白天的不同了。我的问题很简单:如何使[df stringFromDate]==currentDate??它是相同的。不要被记录
NSDate
对象的输出所迷惑。这只是用于显示值的时区之间的差异。在我看来,如果您的时区比UTC时间早两个或更多小时(这是因为您在意大利)。为什么?为什么打印currentDate不同于打印stringFromDate:?问题在于日期:有1天的差异!早上运行它,就不会有白天的不同了。我的问题很简单:如何使[df stringFromDate]==currentDate??它是相同的。不要被记录NSDate
对象的输出所迷惑。这只是用来显示值的时区的差异。iOS中的日期是一个非常令人头痛的问题!iOS中的日期非常令人头痛!