【问题标题】:NSDate early by 1 hour?NSDate 提前 1 小时?
【发布时间】:2012-08-29 11:52:55
【问题描述】:

我正在使用以下代码来设置日期对象:

NSDate *date = [NSDate date];
        NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
        NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: date];
        [components setHour: 18];
        [components setMinute: 00];
        [components setSecond: 00];

        reminderDate = [gregorian dateFromComponents: components];

但是,当我 NSLog 提醒日期时,我得到以下输出:

Time: 2012-08-29 17:00:00 +0000

提前一小时,谁能解释我需要做什么才能在 reminderDate 中存储正确的日期?

谢谢,

泰辛

【问题讨论】:

标签: iphone objective-c ios nsdate nsdatecomponents


【解决方案1】:

您的时区是?如果你注意到,你打印的日期有 +0 时区,所以如果你的时区是 +1 是正确的。

【讨论】:

  • 我尝试将时区设置为使用我的本地时区和 NSTimeZone localTimeZone 但没有变化..目前我在英国夏令时,即 GMT + 1
  • 这意味着日志中的日期是正确的,因为它显示时没有时区,因此+0000
  • 日志中的日期不正确,如果我这样做: NSLog(@"Current Date: %@", [NSDate date]);打印的日期也比应有的时间早 1 小时..
  • 日志是正确的,NSLog总是打印时区+0。如果您的时区不同,请将日期转换为时区 +0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多