首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS UIDatePicker时区问题

iOS UIDatePicker时区问题
EN

Stack Overflow用户
提问于 2013-03-31 04:10:14
回答 1查看 4.5K关注 0票数 3

我在UIDatePicker上遇到了一个非常令人沮丧的时区问题。

初始化日期选择器时,我将时区设置为系统时区,以允许应用程序在多个国家/地区使用

代码语言:javascript
运行
复制
[datePicker setTimeZone:[NSTimeZone systemTimeZone]];

然后用户选择日期。在保存日期(保存在CoreData中)时,从日期选择器返回的日期是正确的,但是我想只获取日期而不是时间,即时间为00:00:00

当我选择以GMT (不是BST)表示的日期时,该日期可以正常工作。如果我选择日期在英国夏令时(3-10月),我会得到一个小时后的日期。

这就是我拉出日期的方法

代码语言:javascript
运行
复制
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *dateOfBirth = [dateFormatter dateFromString:[dateFormatter stringFromDate:      [dobDatePicker date]]];

我检查了一下,系统时间肯定是格林尼治标准时间,那么为什么dateOfBirth的值返回错误

i.e

代码语言:javascript
运行
复制
[dobDatePicker date] = "1991-05-30 18:58:16 +0000"
dateOfBirth          = "1991-05-29 23:00:00 +0000"

有什么建议吗?我不想强制时区,因为我希望它运行在手机时区。

我对时间不感兴趣的原因是,我将这个日期存储为出生日期,并使用它来计算年龄和离生日还有多少秒等值,所以我不想要我存储在CoreData中的日期选择器中的当前时间

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-04-05 06:56:23

在获取时间时使用以下内容,并让我知道它是否适用于您。

代码语言:javascript
运行
复制
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];

这将始终返回电话的时区。我想systemTimeZone可能被窃听了。干杯。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15722989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档