Objective c NSDate和NSDate组件返回错误的日期

Objective c NSDate和NSDate组件返回错误的日期,objective-c,ios,nsdate,nsdatecomponents,Objective C,Ios,Nsdate,Nsdatecomponents,我知道这个问题被问了一百万次,我就是找不到解决办法。问题是:我正在修改NSDate以返回当月第一天的日期或下个月第一天的日期。它似乎工作得很好,除了一件事:它返回时间减去2或3个小时 代码: 以下是debuggergdb输出: (gdb) po theComp <NSDateComponents: 0x6e26170> TimeZone: Europe/Kiev (EET) offset 7200 Calendar Year: 2012 Month: 3 Day: 1

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

代码:

以下是debuggergdb输出:

(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
任何帮助都将不胜感激


谢谢。

日期以格林尼治标准时间显示:2012-02-29 00:00:00+0000是2012-03-01 22:00:00+0200。另外,不要忘记夏时制的改变,这也解释了为什么有时会有3个小时的差异


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

日期以GMT显示:2012-02-29 00:00:00+0000是2012-03-01 22:00:00+0200。另外,不要忘记夏时制的改变,这也解释了为什么有时会有3个小时的差异


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

hmm。。。奇怪,但这是真的。我确实希望调试器/NSLog提供规范化的输出。谢谢。。。奇怪,但这是真的。我确实希望调试器/NSLog提供规范化的输出。谢谢
(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