开发者社区> 问答> 正文

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 2009 0
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
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载