【问题标题】:iPhone & JSON: Encode dates in JSON objects for use in iPhone applicationsiPhone & JSON:在 JSON 对象中编码日期以用于 iPhone 应用程序
【发布时间】:2011-07-23 18:10:48
【问题描述】:

考虑到性能和可读性,应如何将日期编码为 JSON 以便在 iPhone 应用程序中使用?理想的编码可以很容易地与 NSDate 一起工作,但也可以在基于 Web 的后端中使用(即不使用 iPhone 独有的 API,跨平台)。以下是我一直在考虑的一些编码:

# UNIX Epoc based integer encoding
{"Date":123456789}

# ISO 8601 String format
{"Date":"2011-03-25T20:00Z"}

在处理数千个日期时,解析 ISO 8601 字符串是否会对性能产生太大影响?与 Epoc 相比,性能受到的影响是否太低?是否缺少满足上述要求的编码?

【问题讨论】:

  • 如果您得到解决方案,请发布。我也有同样的问题。不知道怎么转换成正常时间格式

标签: iphone cocoa json datetime epoch


【解决方案1】:

当我控制服务器堆栈时,我总是使用基于 Unix 纪元的编码。 我的用例

利大于弊

时代专家

  • 更快(如果处理大量日期,可能会出现问题。)
  • 需要更少的代码
  • 几乎所有日期/时间库/语言都支持

时代缺点

  • 人类不可读
  • 虚假输入(只要是数字)可能仍会为您提供有效日期

ISO 专家

  • 非常易读
  • 虚假输入(格式错误)可能无法为您提供有效日期

ISO 缺点

  • 占用更多字节
  • 需要编写/查找您自己的 Cocoa 实现(如果找不到,请告诉我,我在某处有一个类别)

ISO 解析并不难,但您必须检查自己的实现。 Cocoa 没有最快的字符串解析器。我必须相信它会明显变慢(可能超过 2 倍)。

【讨论】:

  • +1 好点。选择 unix epoch 方法的另一个正当理由是它的分辨率总是精确到秒。
  • 我有相同的json格式编码,我认为它也是unix。如何转换为日期格式? {“id”:“ntp-a1.nict.go.jp”,“it”:1232963971.248,“st”:1344328809.885,“leap”:34,“next”:1341100800,“step”:1}
  • 这是可可将 epoch 转换为 NSDate 的方式:[NSDate dateWithTimeIntervalSince1970:epoch]
猜你喜欢
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 2011-08-17
  • 2023-03-06
  • 2010-12-17
  • 1970-01-01
相关资源
最近更新 更多