我正在使用返回JSON WCF DateTime的Web服务。

字符串就像\/Date(1316397792913+0800)\/
我有兴趣提取1316397792,它是自1970年1月1日以来的时间(以秒为单位)。这样我就可以使用NSDate timeIntervalSince1970方法获取当前时间。我以毫秒为单位裁剪了最后3位数字,而timeIntervalSince1970则以秒为单位。

这是我目前正在执行的操作,它不适用于2001年之前的某个日期,该日期自1970年以来的时间间隔(毫秒)少于10个字符。

NSString *dateString = @"\/Date(1316397792913+0800)\/";
    NSLog(@"dateString :%@", dateString);

    NSDate *date = [NSDate dateWithTimeIntervalSince1970:
                    [[dateString substringWithRange:NSMakeRange(6, 10)] intValue]];
    NSLog(@"NSDate:%@", date);

dateString :/Date(1316397792913+0800)/
NSDate:2011-09-19 02:03:12 +0000

因此,我需要更好地解决dateString的问题,该方法不能假定我们每次都要使用10个字符。

最佳答案

您可以简单地获取(的索引和+的索引之间的子字符串。就像是:

NSRange begin = [dateString rangeOfString:"("];
NSRange end = [dateString rangeOfString:"+"];
NSString* milliSecondsSince1970 = [dateString substringWithRange:NSMakeRange(begin.location + 1, end.location - begin.location - 1)];

附言:检查一次错误。

09-30 14:25
查看更多