【问题标题】:Something wrong with nscalendar [duplicate]nscalendar有问题[重复]
【发布时间】:2014-04-23 15:08:43
【问题描述】:

我不明白这里发生了什么:(:

NSLog(@"date : %@, hours : %d", self.now, [[self.calendar components:NSHourCalendarUnit fromDate:self.now] hour]);

结果

date : 2000-01-01 01:00:19 +0000, hours : 2

为什么不是 hours: 1 ?一个想法?

编辑:

self.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

self.now 只是一个日期。

【问题讨论】:

  • 能否提供初始化calendarnow 对象的代码?
  • NSLog(@"date : %@", date) 以格林威治标准时间打印日期。 [calendar components:...] 使用您当前的时区。

标签: ios nsdate nscalendar


【解决方案1】:

来自 Apple 文档:

返回接收器的小时单位数。

- (NSInteger)hour 

返回值:接收者的小时单位数。

讨论:此值在日历上下文中解释 与它一起使用

日历上下文根据设置为 calendar 对象的时区生成 hour 组件。
当您通过调用
[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
初始化calendar 它会自动从设备设置中检索时区。

在日志中,我们看到 GMT+0 时区 (2000-01-01 01:00:19 +0000)。我猜你的时区是 GMT+1。在这种情况下,NSCalendar 可以正常工作。

【讨论】:

  • 谢谢!我认为 NSCalendar 不依赖于时区
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-01
相关资源
最近更新 更多