1

嗨,我正在创建一个 NSDate,我用它来设置选择器,但是当我将选择器日期输出到 NSLog 时,它总是比实际选择器中显示的时间晚一个小时。

同样作为测试,我注意到代码: NSDate *now = [NSDate date]; //应该给我模拟器上的当前日期和时间 NSLog(@"Date and Time now: %@", now);

NSLog 值总是比我的模拟器上显示的时间晚 1 小时。

我的问题是为什么?

提前致谢 :)

更新 - - - - - - - - - - - - - - - - - - - - - - - - - -------------------------------------------

我又做了几个测试,结果发现使用 NSGregorian Calendar 的 NSDate 返回了正确的时间,然后使用 currentCalendar 的 NSDate 关闭了 1 小时。

所以我的新问题是为什么会这样?我检查了模拟器上的设置,并且设备的日历设置为公历。这可能是由于时区差异造成的吗?如果是这样,那么我有没有办法将选择器设置为使用与用户设备相同的时区?

谢谢

4

1 回答 1

2

我认为这是因为您的模拟器时间设置为默认时区(EN)。NSDate 始终从您的本地时间设置。当您在设备上尝试时,它会是正确的。

我的项目中有这段代码并且工作正常:

NSDate*now = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd.MM.yyyy"];

我创建日期并将其存储到我的 CoreData。那个时间总是我在设备上的实际时间。

无论如何,恭喜你的新 iPhone。欢迎来到苹果大家庭!:)

于 2013-10-03T00:08:56.633 回答