我正在尝试使用 RestKit 将数据导入和映射到 CoreData。
这是来自 API 的数据。
active": false,
"date": "2012-09-09",
"desc": "",
"end": "18:30",
"location": "",
"simStatus": "Accepted",
"start": "17:00",
"title": "The title"
当我尝试将这些映射到 Core Data 时,有时会更改日期。例如,上述存储在 Core Data 中的数据将以 start = 1970-1-1 23:00 和 end = 1970-1-1 00:30 结束?
API 发送过来的时间是当地时间,API 知道应用程序的使用时间和地点。想想体育赛事,我们知道客场比赛的地点/时间。
我需要将这些时间和日期存储在 Core Data 中,即 API 将它们交给它们的确切时间 hh:mm。不确定为什么 Core Data 或 Restkit 决定改变它们?我理解 1970 部分的开始和结束没有日期,但为什么要更改时间?
有谁知道解决方案?
下面是 RestKit 映射代码,我尝试过使用时区、无时区、本地时区、UTC 时区等...我也尝试过使用和不使用 en_US_POSIX。
NSDateFormatter* timeFormatter = [NSDateFormatter new];
[timeFormatter setDateFormat:@"HH:mm"];
timeFormatter.timeZone = [NSTimeZone localTimeZone];
timeFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDateFormatter* dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
dateFormatter.timeZone = [NSTimeZone localTimeZone];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
gameMapping.dateFormatters = [NSArray arrayWithObjects:dateFormatter, timeFormatter, nil ];
[gameMapping mapKeyPath:@"start" toAttribute:@"start"];
[gameMapping mapKeyPath:@"end" toAttribute:@"end"];
.......