如何在objective-c中将JSON date反序列化为NSDate?
我有一个源日期字符串 /日期(1455895287677-0500) 在目标c中。我需要将其转换为类似“2015-01-01 HH:MM:SS”的格式 如何将其转换为日期或NSDate如何在objective-c中将JSON date反序列化为NSDate?,objective-c,json,date,datetime,jsonmodel,Objective C,Json,Date,Datetime,Jsonmodel,我有一个源日期字符串 /日期(1455895287677-0500) 在目标c中。我需要将其转换为类似“2015-01-01 HH:MM:SS”的格式 如何将其转换为日期或NSDate 我正在使用JSONModel,但它似乎不起作用。嗯,它是日期的非标准格式。看起来是1970年以来的毫秒加上时区。您不需要将其转换为“2015-01-01 HH:MM:SS”之类的内容,您需要一个NSDate 取字符串,检查它是否以/Date开头(并以/结尾),然后删除它们,检查它们之间是否有+或-,拆分为+或-之
我正在使用JSONModel,但它似乎不起作用。嗯,它是日期的非标准格式。看起来是1970年以来的毫秒加上时区。您不需要将其转换为“2015-01-01 HH:MM:SS”之类的内容,您需要一个NSDate 取字符串,检查它是否以/Date开头(并以/结尾),然后删除它们,检查它们之间是否有+或-,拆分为+或-之前的部分,以及以+或-开头的部分,第一部分调用doubleValue,然后除以1000(因此自1970年以来有秒),第二部分调用integerValue,所以你可以得到小时和分钟,但是是十进制的。取这个整数值,除以100得到小时,再减去小时乘以100,剩下的是分钟。将时间加上小时*3600和分钟*60。然后[NSDate DATE WITH TIME INTERVALICENS1970]
显然,要做一些测试,记录下你没有预料到的事情,并确保你能处理好 正如我在问题中提到的,我最初尝试使用JSONModel来反序列化日期字符串,如“/date(1455895287677-0500)/”但失败了。原因是JSONModel不支持NSDate 然而,幸运的是,我们可以通过修改和向JSONModel中添加方法来实现这一目标
这个数字代表什么?对于UNIX时间戳,它太large@vadian:取这个数字,除以60*60*24*365.25,得到大约46000。我们已经超过1970年46岁了。很明显,这是自大纪元以来的毫秒时间,这是有意义的:-)事实上,这个链接有这个问题的实现,但仍然感谢对格式的解释。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:APIDateFormat];
return [formatter dateFromString:string];