2014-09-23 60 views
6

这个奇怪的问题出现在ios 8发布中。下面是示例代码:iOS 8欧洲/莫斯科时区问题

NSDate * date = [NSDate dateWithTimeIntervalSince1970:1414785600]; 

dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ru_RU"]]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Moscow"]]; 
[dateFormatter setDateStyle:NSDateFormatterFullStyle]; 

[dateFormatter setDateFormat:@"MM"]; 
NSString * month = [dateFormatter stringFromDate: date]; 

日期为2014-11-01 00:00:00 MSK(或2014-10-31 20:00:00 +0000

运行iOS 7,月值是11,但在iOS 8是10 任何想法有什么不对? 谢谢。

PS。立即检查亚洲/马斯喀特时区(+4,如MSK)。一切正常,月份为11.

+0

您是否检查在不同时区的值是否相同? – marceloquinta 2014-09-23 14:42:12

回答

3

[timezone secondsFromGMTForDate:date]在iOs7和10800在给定日期iOs8返回14400。它应该反映俄罗斯政府http://www.timeanddate.com/time/change/russia/moscow所做的(再次)改变,iOs7尚未意识到。

+0

所以这是一个iOS 7问题,而不是iOS 8问题? – gnasher729 2014-09-23 15:26:24

+1

我相信是这样,通常旧的iOs版本会接收这些更改的微小更新。 – 2014-09-23 15:28:44