栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在iPhone上解析JSON日期

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在iPhone上解析JSON日期

作为学习Objective-C的.NET程序员,当我尝试使用.Net WebService时,我遇到了同样的问题。

起初我还以为我将能够使用NSDateFormatter
…我发现它的符号一个很好的参考这里,但我很快意识到,我需要的数量从毫秒转换为秒。

我写了代码来做到这一点…我仍在学习Obj-C,但我不认为它应该这么难…

- (NSDate *) getJSONDate{    NSString* header = @"/Date(";    uint headerLength = [header length];    NSString*  timestampString;    NSScanner* scanner = [[NSScanner alloc] initWithString:self];    [scanner setScanLocation:headerLength];    [scanner scanUpToString:@")" intoString:&timestampString];    NSCharacterSet* timezoneDelimiter = [NSCharacterSet characterSetWithCharactersInString:@"+-"];    NSRange rangeOfTimezoneSymbol = [timestampString rangeOfCharacterFromSet:timezoneDelimiter];    [scanner dealloc];    if (rangeOfTimezoneSymbol.length!=0) {        scanner = [[NSScanner alloc] initWithString:timestampString];        NSRange rangeOfFirstNumber;        rangeOfFirstNumber.location = 0;        rangeOfFirstNumber.length = rangeOfTimezoneSymbol.location;        NSRange rangeOfSecondNumber;        rangeOfSecondNumber.location = rangeOfTimezoneSymbol.location + 1;        rangeOfSecondNumber.length = [timestampString length] - rangeOfSecondNumber.location;        NSString* firstNumberString = [timestampString substringWithRange:rangeOfFirstNumber];        NSString* secondNumberString = [timestampString substringWithRange:rangeOfSecondNumber];        unsigned long long firstNumber = [firstNumberString longLongValue];        uint secondNumber = [secondNumberString intValue];         NSTimeInterval interval = firstNumber/1000;        return [NSDate dateWithTimeIntervalSince1970:interval];    }    unsigned long long firstNumber = [timestampString longLongValue];    NSTimeInterval interval = firstNumber/1000;    return [NSDate dateWithTimeIntervalSince1970:interval];}

希望有人可以提供更好的Obj-C解决方案。如果不是这样,我可能会保留这种情况,或者正在寻找一种方法来更改.NET中的序列化格式

编辑:

关于JSON DateTime格式…如果您对服务有任何控制权,则最好将日期转换为DataContract对象中的字符串。

对我来说,格式化为RFC1123似乎是个好主意。因为我可能可以使用NSDateFormatter轻松地将其拾取。

引用里克·斯特拉尔的话

没有Javascript日期文字,Microsoft设计了一种自定义日期格式,该格式本质上是一个标记字符串。格式是经过编码的字符串,其中包含标准的新Date(自1970年以来的毫秒)值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372589.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号