创建我设置的日期的NSDates

时间:2015-07-01 07:56:31

标签: ios objective-c macos cocoa nsdate

考虑以下代码:

  NSDateComponents *comps = [[NSDateComponents alloc] init];
  [comps setDay:2];
  [comps setMonth:6];
  [comps setYear:2016];

  NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

  NSDate *date = [gregorian dateFromComponents:comps];

如果我将日期打印到控制台,则

2016-06-01 23:00:00 +0000

6月1日,而不是6月2日。

有没有办法在没有iOS转换的情况下创建我想要的日期到某个疯狂的约会?

2 个答案:

答案 0 :(得分:1)

在我的时区,它是GMT+0800 (GMT+08:00) offset 28800,因此请将日期打印到控制台

2016-06-01 16:00:00 +0000

如果您想要日期打印2016-06-02 00:00 +0000,则需要将时区gmt设置为0。

gregorian.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

答案 1 :(得分:1)

一句话"时区"。

世界某个地方的6月1日和世界其他地方的6月2日,都在同一时刻。

配置您的时区并了解[NSDate description]以UTC显示日期/时间,[NSDate description]和调试器都使用NSLog(),您应该大部分时间都在这里。< / p>