创建我设置的日期的 NSDates

Creating NSDates that are the dates I set

考虑这段代码:

  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 将其转换为疯狂的日期?

在我的时区,现在是 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];

一句话"timezone".

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

配置您的时区并了解 [NSDate description] 在 UTC 中显示 date/times 并且 NSLog() 和调试器都使用 [NSDate description] 并且您应该是大多数人那里。