2013-03-16 126 views
0

我有一个NS日期存储被记录为NSDateComponents产生意想不到的效果

2013-03-15 00:00:01 +0000 

我推定该+0000是UTC时间。然而,当我尝试

NSCalendar* theCalendar = [NSCalendar currentCalendar]; 

unsigned theUnitFlags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 

NSDateComponents* compsForDate = [theCalendar components:theUnitFlags fromDate:compDate]; 

样稿被记录为:

<NSDateComponents: 0xc0537b0> 
    Calendar Year: 2013 
    Month: 3 
    Leap month: no 
    Day: 14 
    Hour: 20 
    Minute: 0 
    Second: 1 
    Weekday: 5 

我都会以为,这一天将是15小时将是0,因为我没想到有与此日期相关的时区。谁能告诉我我要去哪里?

回答

4

有一个与该日期相关的时区UTC。还有一个与您的日历相关的时区;可能是您的语言环境设置的时区(无论如何,这是默认设置)。该日历将为您提供在该时区解释该日期时产生的日期组件。

+0

虽然这是有意义的一个级别,但它也令人困惑 - 不应该这样给日期UTC的组件吗?它如何知道日期是否存储在当前时区?有没有办法获得UTC的NSDateComponents?我有意将它们存储在UTC中,以便我可以获得正确的组件,然后将它们转换为所需的时区。 – SAHM

+0

使用UTC日历。 – 2013-03-16 19:03:32

+0

谢谢,我不知道我在想什么 – SAHM

1

时间字符串中的+0000表示UTC(英格兰,格林威治)的小时偏移量。您在文章中包含的结果时间组件是与您的本地时区相关的时间。根据comps,本地时区距离UTC为-4小时。

Kevin。

相关问题