日期和时区

发布于 2024-10-15 10:35:33 字数 908 浏览 9 评论 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 上设置了什么。

谢谢。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

走野 2024-10-22 10:35:33

我不确定我是否理解你的问题。 [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.

风苍溪 2024-10-22 10:35:33

[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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文