开发者社区 问答 正文

NSDateComponent小时不正确

搞不懂为什么我用NSDateComponent修改NSDate的小时就会出错:

NSDateComponent components = [calendar components:  (NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) fromDate:today];

[components setMinute:myMinute];
[components setHour:7];

NSDate *myNewDate = [calendar dateFromComponents:components];
NSLog(@"%@",myNewDate);

这样之后NSlog就变成:
`
2012-12-08 06:00:00 +0000
`

差了一个小时,我设置的其实是7点

展开
收起
爵霸 2016-05-27 11:02:33 2088 分享 版权
1 条回答
写回答
取消 提交回答
  • 是时区的问题:

    [components setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

    映射到你的时间设置:

    int main(int argc, char *argv[]) {
    @autoreleasepool {
        NSDate *today = [NSDate date];
        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSDateComponents *components = [calendar components:  (NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) fromDate:today];
    
        [components setMinute:50];
        [components setHour:7];
        [components setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    
        NSDate *myNewDate = [calendar dateFromComponents:components];
        NSLog(@"%@",myNewDate);
    }
    }
    2019-07-17 19:17:23
    赞同 展开评论
问答地址: