来自NSDate的NSDateComponents产生了意想不到的结果

时间:2013-03-16 18:41:59

标签: ios date nsdate nscalendar nsdatecomponents

我有一个存储的NS日期,记录为

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];

comps记录为:

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

我原本假设那天是15,小时是0,因为我认为这个日期没有时区。谁能告诉我哪里出错了?

2 个答案:

答案 0 :(得分:4)

有一个与该日期相关联的时区-UTC。还有一个与您的日历相关的时区;可能是您的区域设置的时区(无论如何都是默认值)。日历为您提供了在其时区中解释该日期所产生的日期组件。

答案 1 :(得分:1)

时间字符串中的+0000表示UTC(格林威治,英格兰)的小时偏移量。您在帖子中包含的结果时间成分是考虑当地时区的时间。根据比较,您当地的时区距离UTC还有-4小时。

凯文。