【问题标题】:JSON date to NSDate and backJSON日期到NSDate并返回
【发布时间】:2011-01-25 00:43:56
【问题描述】:

我有一个 JSON 日期,例如:1295804021525,这是从 1970 年开始的毫秒数。

我已经编写了以下代码来将此数字转换为 NSDate:

long long seconds = [[payload valueForKey:@"starttime"]longLongValue]/1000;  
NSDate *somedate = [NSDate dateWithTimeIntervalSince1970:seconds];

哪个有效并返回正确的日期。首先,我想知道这是否是进行转换的最佳方式。

接下来我想知道如何转换回毫秒格式,然后放入url发送回服务器。

我有:

long long date = [somedate timeIntervalSince1970] * 1000;
NSString *urlString = [NSString stringWithFormat:@"http://someurl?since=%qi",date];

这似乎再次起作用,但我想知道如何使用 NSNumber 获得相同的功能。

【问题讨论】:

  • 你需要-valueForKey:吗?为什么不改为-objectForKey:
  • payload 在这种情况下是NSArray 而不是NSDictionary,但是我很好奇这会带来什么好处?谢谢

标签: objective-c json nsdate


【解决方案1】:

使用您的原始转换,您将失去亚秒级的精度。你可能想做类似的事情

CFTimeInterval seconds = [[payload valueForKey:@"starttime"] doubleValue] / 1000.0;

第二个sn-p应该没问题。

我不确定您为什么认为使用 NSNumber 会有所帮助。通过我提到的修改,这两个代码 sn-ps 都很简单,应该可以正常工作。

【讨论】:

  • 我想在这种情况下,NSTimeInterval 可能在语义上更正确(因为我们使用的是 NSDate),尽管类型本身实际上与 CFTimeInterval 相同。
  • 谢谢凯文,今晚我会试试这个。我在某处读到 NSNumber 比它所包装的原始类型更独立于平台,这就是为什么我认为使用它会更好?
  • 实际上,忘记这一点,我读过NSInteger 对不同的架构类型有所不同,而不是NSNumber
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 2013-05-18
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 2013-04-19
相关资源
最近更新 更多