在我们的应用中,我们总是需要选择当前的东部时间(EST或EDT)。
我们在app delegate中设置应用程序时区如下:
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的日期和时间。
无论用户在iPad上设置了什么,我都可以使用[NSDate日期]获得正确的EST日期和时间。
感谢。
答案 0 :(得分:1)
我不确定我是否理解你的问题。 [NSDate date]
始终创建一个日期,其中包含操作系统认为此时有效的日期/时间,即设备的时钟设置为的时间。如果您怀疑这是否确实是当前时间,您需要联系互联网上值得信赖的时间服务器并从那里获取时间。
答案 1 :(得分:0)
[NSDate date]返回设置为当前系统日期和时间的日期。因此,当用户更改到系统上的第二天的日期时,[NSDate date]将返回第二天的日期。 NSDate假设(理所当然地)系统日期是正确的日期。
要显示实际的EST日期,您需要查询系统以外的源(远程源)以获取所需的日期。