OC处理.NetJson时间格式

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

通过服务器收到的json时间格式是/Date(xxxxxxxxxxxxx+xxxx)/,其中前半部分是自1970年的millionSecs,后半部是时区,我们需要对齐进行转换。

解决方式有两种,第一种就是在服务端将时间转换为字符串再发送,那样在IOS端直接用NSDateFormater就能获得时间

如果你对服务端没选择的话,就要自己转换了

只要明白xxxxxxxxxxxxx+xxxx的格式的意义我们就有思路了

首先通过正则表达式取出时间部分和时区部分,计算就可以了

代码如下

+ (NSDate *)DateFromDotNetJSONString:(NSString *)string{staticNSRegularExPRession *dateRegEx =nil;staticdispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

dateRegEx= [[NSRegularExpression alloc] initWithPattern:@"^\\/date\\((-?\\d++)(?:([+-])(\\d{2})(\\d{2}))?\\)\\/$"options:NSRegularExpressionCaseInsensitive error:nil];

});

NSTextCheckingResult*regexResult = [dateRegEx firstMatchInString:stringoptions:0range:NSMakeRange(0, [stringlength])];if(regexResult) {//millisecondsNSTimeInterval seconds = [[stringsubstringWithRange:[regexResult rangeAtIndex:1]] doubleValue] /1000.0;//timezone offsetif([regexResult rangeAtIndex:2].location !=NSNotFound) {

NSString*sign = [stringsubstringWithRange:[regexResult rangeAtIndex:2]];//hoursseconds += [[NSString stringWithFormat:@"%@%@", sign, [stringsubstringWithRange:[regexResult rangeAtIndex:3]]] doubleValue] *60.0*60.0;//minutesseconds += [[NSString stringWithFormat:@"%@%@", sign, [stringsubstringWithRange:[regexResult rangeAtIndex:4]]] doubleValue] *60.0;

}return[NSDate dateWithTimeIntervalSince1970:seconds];

}returnnil;

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航