我正在使用一个API,它将.NET DateTime对象返回到我的iOS应用程序中。我对发生的事情感到有些困惑,DateTime在离开API时看起来很好,但是当它出现时,它会通过JSON进入,并以字符串形式出现:
/Date(1303884000000-0600)/
WTF是那个,如何将其转换为NSDate对象??
谢谢!
答案 0 :(得分:11)
从Parsing JSON dates on IPhone我发现以下功能是完美的:
- (NSDate*) getDateFromJSON:(NSString *)dateString
{
// Expect date in this format "/Date(1268123281843)/"
int startPos = [dateString rangeOfString:@"("].location+1;
int endPos = [dateString rangeOfString:@")"].location;
NSRange range = NSMakeRange(startPos,endPos-startPos);
unsigned long long milliseconds = [[dateString substringWithRange:range] longLongValue];
NSLog(@"%llu",milliseconds);
NSTimeInterval interval = milliseconds/1000;
return [NSDate dateWithTimeIntervalSince1970:interval];
}
答案 1 :(得分:4)
RestKit库有一个NSDateFormatter子类。看看这里的灵感:
https://github.com/RestKit/RestKit/blob/master/Code/Support/RKDotNetDateFormatter.h https://github.com/RestKit/RestKit/blob/master/Code/Support/RKDotNetDateFormatter.m
答案 2 :(得分:2)
基本上你得到的是从1970年1月1日UTC开始的毫秒数,-0600是时区偏移量。请查看此博文http://weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx
您可能必须编写自定义NSDateFormatter来处理该格式的日期,或者您可以在.NET中格式化(更简单),在JSON中输出字符串,然后使用标准NSDateFormatter。