0

在我们的应用程序中,我们总是需要选择当前的东部时间(EST 或 EDT)。

我们在应用程序委托中设置应用程序时区如下:

NSTimeZone *ESTTimeZone = [NSTimeZone timeZoneWithName:@"US/Eastern"];
[NSTimeZone setDefaultTimeZone:ESTTimeZone];

此外,对于 NSDateFormatter,我们将语言环境设置如下:

NSDateFormatter *formatForFileName  = [[NSDateFormatter alloc] init];
[formatForFileName setDateFormat:@"yyyyMMdd"];
NSLocale *uslocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatForFileName setLocale:uslocale];
[uslocale release];

如果我的 iPad 设置为正确的 EST 日期和时间,则没有问题。如果我要按如下方式记录当前日期:

NSLog(@"current date : %@",[formatForFileName stringFromDate:[NSDate date]]);

它将正确显示今天的日期。但是,如果我将 iPad 日期更改为第二天的日期并记录当前日期,我希望返回当前的 EST 日期和时间。但是,[NSDate date] 返回当前 iPad 日期(第二天的日期)和时间,而不是 EST 日期和时间。

有什么方法可以让我使用 [NSDate date] 获得正确的 EST 日期和时间,而不管用户在他的 iPad 上设置了什么。

谢谢。

4

2 回答 2

1

我不确定我是否理解你的问题。[NSDate date]始终使用操作系统认为当前有效的日期/时间创建日期,即设备时钟设置的时间。如果您怀疑这是否确实是当前时间,则需要联系 Internet 上可信赖的时间服务器并从那里获取时间。

于 2011-02-03T19:28:34.523 回答
0

[NSDate date] 返回设置为当前系统日期和时间的日期。因此,当用户在系统上更改为第二天的日期时,[NSDate date] 将返回第二天的日期。NSDate 假设(正确地)系统日期是正确的日期。

要显示实际的 EST 日期,您需要查询系统以外的来源(远程来源)以获得所需的日期。

于 2011-02-03T19:42:53.777 回答