在iPhone上解析JSON日期

在iPhone上解析JSON日期,第1张

在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年以来的毫秒)值。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4910807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存