NSDateFormatter 行为问题

发布于 2024-10-22 10:27:06 字数 511 浏览 2 评论 0原文

我在 iPhone 编程中使用 NSDateFormatter 时遇到问题。 下面是我的代码片段。

NSString *inputDate = @"2011-03-14";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]

我得到的结果是

2011-03-13 16:00:00 +0000

相当于 2011-03-14 00:00:00 的 GMT。 (我的时区是 GMT +08:00)

为什么我会收到此消息?如何得到 2011-03-14 00:00:00 作为结果?

谢谢。

〜一月

I have a problem using NSDateFormatter in iPhone programming.
Below is my code snippet.

NSString *inputDate = @"2011-03-14";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]

The result I am getting is

2011-03-13 16:00:00 +0000

which is the GMT equivalent of 2011-03-14 00:00:00. (My time zone is GMT +08:00)

Why I am getting this? How to get 2011-03-14 00:00:00 as the result?

Thanks.

~Jan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(3

如痴如狂 2024-10-29 10:27:06

您可以使用 设置时区

[formatter setTimeZone:...]

。或者,我会尝试通过以下方式设置格式化程序的区域设置

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"..."];
[formatter setLocale:locale];

You can set the timezone using

[formatter setTimeZone:...]

. Alternatively I would try to just set the formatter's locale by

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"..."];
[formatter setLocale:locale];
甜柠檬 2024-10-29 10:27:06

请看一下这个

NSDateFormatter 返回意外结果

这就是 苹果建议

Pls take a look at this

NSDateFormatter returns unexpected results

This is what Apple recommends

Bonjour°[大白 2024-10-29 10:27:06

您可以尝试将时区添加到原始字符串中

NSString *inputDate = @"2011-03-14+0800";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-ddZZZ"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]

You can try to add the timezone to your original string

NSString *inputDate = @"2011-03-14+0800";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-ddZZZ"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文