日期和时区
在我们的应用程序中,我们始终需要选择当前的东部时间(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 上设置了什么。
谢谢。
In our app, we always need to pick the current Eastern time (EST or EDT).
We set the application timezone as below in the app delegate:
NSTimeZone *ESTTimeZone = [NSTimeZone timeZoneWithName:@"US/Eastern"];
[NSTimeZone setDefaultTimeZone:ESTTimeZone];
Also, for the NSDateFormatter, we set the locale as follows:
NSDateFormatter *formatForFileName = [[NSDateFormatter alloc] init];
[formatForFileName setDateFormat:@"yyyyMMdd"];
NSLocale *uslocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatForFileName setLocale:uslocale];
[uslocale release];
If my iPad is set to correct EST date and time, there is no issue. If I were to log the current date as follows:
NSLog(@"current date : %@",[formatForFileName stringFromDate:[NSDate date]]);
it will display today's date correctly.
However, if I change my iPad date to be the next day's date and log the current date, I would want the current EST date and time to be returned.
However, [NSDate date] returns me the current iPad date (the next day's date) and time and not the EST date and time.
Is there any way I can get the correct EST date and time using [NSDate date] irrespective of what the user has set on his iPad.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不确定我是否理解你的问题。
[NSDate date]
始终使用操作系统认为当前有效的日期/时间(即设备时钟设置的时间)创建日期。如果您怀疑这是否确实是当前时间,则需要联系互联网上值得信赖的时间服务器并从那里获取时间。I'm not sure if I understand your question.
[NSDate date]
always creates a date with the date/time the OS thinks is valid at the moment, i.e. the time the device's clock is set to. If you have doubts whether this is indeed the current time, you would need to contact a trustworthy time server on the Internet and get the time from there.[NSDate date] 返回设置为当前系统日期和时间的日期。因此,当用户更改系统上的第二天的日期时,[NSDate date] 将返回第二天的日期。 NSDate 假设(正确地)系统日期是正确的日期。
要显示实际的 EST 日期,您需要向系统以外的源(远程源)查询所需的日期。
[NSDate date] returns a date set to the current system date and time. So when the user changes to the next day's date on the system, [NSDate date] will return next day's date. NSDate assumes (rightfully so) that the system date is the correct date.
To display the actual EST date, you will need to query a source (a remote source) other than the system for the date that you want.