我的国家位于GMT + 0。我们现在是+1小时,因为我们在夏令时。iPhone - 考虑夏令时的当前日期
当我做
[NSDate date];
它应该返回当前的日期和时间,但是当我这样做,我收到GMT时间不考虑夏令时。
这就是文档说的date命令
创建并返回一个新的日期设置为当前日期和时间。
苹果为什么这么做?为什么一切都如此复杂?这是一个错误?有没有办法获得设备当前的实时状态?与设备时钟上显示的时间相同吗?
我的应用取决于日期和时间,并且位于世界各地夏令时或冬季的不同时区的用户的日期错误将会是一场灾难。
谢谢。
编辑
几个答案后,我曾尝试这样的代码:
NSDate *wrongToday = [NSDate date];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *currentTime = [dateFormatter wrongToday];
NSDate *today = [dateFormatter dateFromString:currentTime];
你猜怎么着,今天= wrongToday ... 换句话说,没有任何变化,我继续有没有夏令时的错误日期。 更令人惊讶的是,CurrentTime在NSString中显示日光节约的日期...
任何线索?再次感谢。
NSDate对象表示绝对时刻。它们不受夏令时或时区的影响。要在特定时区输出日期,您应该创建一个NSDateFormatter的实例。 – albertamg
对不起,但Apple文档说[NSDate date]返回当前的日期和时间,这是不正确的。当前日期和时间必须考虑夏令时。 – SpaceDog
时区和夏令时是本地化问题。文件提到格林尼治标准时间在许多地方,但他们当然可以更清楚。 – MRAB