解析日期并以1,nsdate结束休息日

时间:2015-06-17 23:39:13

标签: ios objective-c nsdate nsdateformatter nsdatecomponents

有两个结束日,比如beloew

A = 2029-12-31T00:00:00+00:00
B = 2029-12-31T12:00:00+00:00

我按照

获得月,日和年
NSDateFormatter *endDateFormatter = [[NSDateFormatter alloc] init];
[endDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *endDate = [endDateFormatter dateFromString:self[@"license"][@"endDate"]];
NSDateComponents *endDatecomponents = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:endDate];

这是我得到的A

Printing description of endDate:
2029-12-31 00:00:00 +0000
Printing description of endDatecomponents:
<NSDateComponents: 0x79e069e0>
    Calendar Year: 2029
    Month: 12
    Leap month: no
    Day: 30

对于B,我正在

2029-12-31 12:00:00 +0000
Printing description of endDatecomponents:
<NSDateComponents: 0x7be8eb60>
    Calendar Year: 2029
    Month: 12
    Leap month: no
    Day: 31

我很困惑为什么2029-12-31T00:00:00+00:00只给我一天休息1。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这是由于您的时区和UTC之间的差异。值2029-12-31T00:00:00+00:00是UTC时区的12月31日。但是,当您设置日期组件时,您将在当地时间12月30日的时区中找回日期。