【发布时间】:2015-07-29 10:24:01
【问题描述】:
我正在使用Core-Data来存储日期时间对象。
例如。 2015-07-28T07:16:52+0000 这是GMT 时区的 ISO 格式日期。
但是当我将这个日期保存在数据库中时
NSString* dateString=@"2015-07-28T07:16:52+0000";
NSDateFormatter* dateTimeformatter=[[NSDateFormatter alloc] init];
[dateTimeformatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
[dateTimeformatter dateFromString:dateString];
我在数据库中看到的结果日期是2015-07-28 12:46:52
根据我设备的时区位于IST
我也尝试在 dateFormatter 中设置时区,但同样的响应
NSString* dateString=@"2015-07-28T07:16:52+0000";
NSDateFormatter* dateTimeformatter=[[NSDateFormatter alloc] init];
[dateTimeformatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
[dateTimeformatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[dateTimeformatter dateFromString:dateString];
即使我将[NSDate date]直接保存在数据库中,它也会根据设备的时区保存转换后的日期。
为什么 Core-data 不考虑 NSDateFormatter 的时区?
谁能告诉我如何将GMT 中的日期保存在数据库中,而不管我的设备的时区如何?
【问题讨论】:
-
试试 [dateTimeformatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];或系统 [dateTimeformatter setTimeZone:[NSTimeZone systemTimeZone]];
-
Nop 不适用于 [NSTimeZone timeZoneWithName:@"GMT"] 和 systemTimezone 它将采用本地时区
-
不确定,但请尝试“yyyy-MM-dd'T'HH:mm:ss Z”而不是“yyyy-MM-dd'T'HH:mm:ssZ”
-
也许这有帮助 [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"]; stackoverflow.com/questions/16254575/…
-
好的,所以您明白当您使用
NSLog()显示NSDate对象时,它会显示在格林威治标准时间时区,对吧?
标签: ios core-data nsdateformatter nstimezone