考虑以下代码:
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转换的情况下创建我想要的日期到某个疯狂的约会?
答案 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>