1

これらの 2 つの日付を NSDateComponents と結合しようとしています

"2012-09-03 00:00:00 +0000" & "1970-01-01 08:00:00 +0000"

私が得る次のコードで --> 2012-09-02 11:00:00 +0000

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
    NSDateComponents *comps = [[NSCalendar currentCalendar] components:unitFlags fromDate:session.date];
    NSDate *day3 = [[NSCalendar currentCalendar] dateFromComponents:comps];

    unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    comps = [[NSCalendar currentCalendar] components:unitFlags fromDate:session.start];
    comps.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    day3 = [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:day3 options:0];
4

1 に答える 1

5

解決策を見つけました。

答えは次のとおりです。

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
    NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    cal.timeZone = [NSTimeZone timeZoneWithName:@"UTC"]; <--this is key

    NSDateComponents *comps = [cal components:unitFlags fromDate:session.date];
    comps.hour = 0;
    comps.minute = 0;
    NSDate *day3 = [cal dateFromComponents:comps];

    unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *hourComps = [cal components:unitFlags fromDate:session.start];

    day3 = [cal dateByAddingComponents:hourComps toDate:day3 options:0];

上記の日付を指定すると、結果は 2012-09-02 08:00:00 +0000 になります。

于 2012-08-10T04:29:49.820 に答える