带有 NSDateFormatter 的 RestKit
Posted
技术标签:
【中文标题】带有 NSDateFormatter 的 RestKit【英文标题】:RestKit with NSDateFormatter 【发布时间】:2014-07-22 14:57:14 【问题描述】:这是我第一次使用 RestKit,我在日期格式方面遇到了问题。我给它的日期是:2014-07-18T09:00:54
我已经创建了一个 NSDateFormatter 并尝试使用 NSLog 对其进行测试:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
NSLog(@"%@", [dateFormatter dateFromString:@"2014-07-18T09:00:54"]);
然后它会打印出以下正确答案:2014-07-18 09:00:54 +0000。我查看了https://github.com/RestKit/RestKit/wiki/Object-Mapping#transforming-date-and-time-representations,并尝试添加这样的格式化程序,没有锁定。
[[RKValueTransformer defaultValueTransformer] insertValueTransformer:dateFormatter atIndex:0];
它打印出来:2014-07-18 11:00:54 CEST,所以我猜它使用默认格式化程序。谁能帮我解释一下这个问题?
【问题讨论】:
您何时/在哪里打电话给insertValueTransformer:atIndex:
?断点并检查何时添加默认转换器(在您的之前或之后)。
我认为这是一个错误。参考。 github.com/RestKit/RestKit/issues/1715
这将为您提供有关如何修复/解决此问题的说明。
【参考方案1】:
下面的代码解决了我的
/
*
* Before we set up mappings, add a String <--> Date transformer that interprets string dates
* lacking timezone info to be in the user's local time zone
*/
[RKObjectMapping class]; // Message the RKObjectMapping class (+ subclasses) so +initialize is
[RKEntityMapping class]; // called to work around RK bug, see GH issue #1631
NSDateFormatter *localOffsetDateFormatter = [[NSDateFormatter alloc] init];
[localOffsetDateFormatter setLocale:[NSLocale currentLocale]];
[localOffsetDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[localOffsetDateFormatter setTimeZone:[NSTimeZone localTimeZone]];
[[RKValueTransformer defaultValueTransformer] insertValueTransformer:localOffsetDateFormatter atIndex:0];problem.
也可以在以下网址找到:www.github.com/RestKit/RestKit/issues/1715
【讨论】:
以上是关于带有 NSDateFormatter 的 RestKit的主要内容,如果未能解决你的问题,请参考以下文章
为啥我需要保留NSDateFormatter dateFromString的结果: