我试图在ios中创建一个日期:
NSCalendar *gregorian=[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone systemTimeZone]];
NSDateComponents *dateComponentes=[[NSDateComponents alloc] init];
//We create a date invented.
[dateComponentes setYear:2014];
[dateComponentes setMonth:2];
[dateComponentes setDay:15];
[dateComponentes setHour:0];
[dateComponentes setMinute:0];
[dateComponentes setSecond:0];
[dateComponentes setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *initialDate = [gregorian dateFromComponents:dateComponentes];
问题是,我目前的时区是BST,但是当我打印时,我得到了这个:
(lldb) po [initialDate descriptionWithLocale:[NSLocale localeWithLocaleIdentifier:@"en_GB"]]
Saturday, 15 February 2014 00:00:00 Greenwich Mean Time
但是这个日期我应该得到2014-02-14 23:00:00 +0000吗? :
(lldb) po [initialDate description]
2014-02-15 00:00:00 +0000
我尝试使用NSDate并且是对的,
(lldb) po [[NSDate date] descriptionWithLocale:[NSLocale localeWithLocaleIdentifier:@"en_GB"]]
Thursday, 29 May 2014 16:35:21 British Summer Time
(lldb) po [[NSDate date] description]
2014-05-29 15:35:26 +0000
有什么想法吗?
答案 0 :(得分:0)
你的第一个例子是2月,也就是冬天,当时英格兰是UTC。你的第二个例子是在DST开关之后,当英格兰是UTC + 1时。使用timeanddate's World Clock播放日期,您会看到NSCalendar
正确计算NSDate
。