2011-02-03 90 views
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日期]会返回当前iPad日期(第二天的日期)和时间,而不是EST日期和时间。

是否有任何方法可以使用[NSDate日期]得到正确的EST日期和时间,而不管用户在他的iPad上设置了什么。

谢谢。

回答

1

我不确定我是否理解你的问题。 [NSDate date]总是创建一个日期,其中包含OS认为此时有效的日期/时间,即设备时钟设置为的时间。如果您怀疑这是否确实是当前时间,那么您需要联系互联网上值得信赖的时间服务器,并从那里获取时间。

0

[NSDate date]返回设置为当前系统日期和时间的日期。因此,当用户切换到系统的第二天的日期时,[NSDate date]将返回第二天的日期。 NSDate假定(正确)系统日期是正确的日期。

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