我对UIDatePicker有一个非常令人沮丧的时区问题。
当我初始化我的日期选择器时,我将时区设置为系统时区,以允许该应用在多个国家/地区使用
[datePicker setTimeZone:[NSTimeZone systemTimeZone]];
然后用户选择日期。在保存日期(保存在CoreData中)时,从日期选择器返回的日期是正确的但我想获得日期而不是时间,即时间为00:00:00
当我在GMT(而不是BST)中选择日期时,日期正常。如果我在BST(3月 - 10月)选择日期,我会将日期提前1小时。
这就是我把日期拉出来的方式
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *dateOfBirth = [dateFormatter dateFromString:[dateFormatter stringFromDate: [dobDatePicker date]]];
我查了一下,系统时间肯定是格林尼治标准时间,那么为什么dateOfBirth的值会回来错误
即
[dobDatePicker date] = "1991-05-30 18:58:16 +0000"
dateOfBirth = "1991-05-29 23:00:00 +0000"
有什么建议吗?我不想强迫时区,因为我希望它能在电话时区运行。
原因我对时间不感兴趣,因为我将这个日期存储为出生日期,并使用它来计算年龄和生日之前的秒数等值,所以不希望日期中的日期选择器的当前时间我存储在CoreData
中由于
答案 0 :(得分:2)
在取代时间时使用以下内容,让我知道它是否适合您。
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
这将始终返回手机的时区。我认为systemTimeZone可能会被窃听。欢呼声。