gpt4 book ai didi

objective-c - NSDate 和 NSDateComponents 返回错误的日期

转载 作者:行者123 更新时间:2023-11-30 12:19:23 25 4
gpt4 key购买 nike

我知道这个问题已经被问了一百万次,我只是找不到解决方案。问题是:我正在修改 NSDate 以返回当月第一天的日期或下个月第一天的日期。它似乎工作正常,除了一件事:它返回的时间减去 2 或 3 小时。

代码:

NSCalendar *theCalendar = [NSCalendar currentCalendar];
int comp = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *theComp = [theCalendar components:comp fromDate:date];
[theComp setTimeZone:[NSTimeZone systemTimeZone]];
switch (roundingMode) {
case FIRST_OF_MONTH:
[theComp setDay:1];
return [theCalendar dateFromComponents:theComp];
case FIRST_OF_NEXT_MONTH:
[theComp setMonth:theComp.month+1];
[theComp setDay:1];
return [theCalendar dateFromComponents:theComp];
}

这是调试器(gdb)输出:

(gdb) po theComp
<NSDateComponents: 0x6e26170>
TimeZone: Europe/Kiev (EET) offset 7200
Calendar Year: 2012
Month: 3
Day: 1
(gdb) po date
2012-03-12 13:05:22 +0000
(gdb) po [theCalendar dateFromComponents:theComp]
2012-02-29 22:00:00 +0000

任何帮助将不胜感激。

谢谢。

最佳答案

日期以 GMT 格式显示:2012-02-29 00:00:00 +00002012-03-01 22:00:00 +0200。另外,不要忘记夏令时的变化,这解释了为什么有时会出现 3 小时的时差。

结果日期是正确的,但调试器以 GMT 显示。

关于objective-c - NSDate 和 NSDateComponents 返回错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44985411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com