7

在 Thrift IDL 中没有 Date 类型。表示日期对象的最佳跨语言机制是什么。我认为有 2 位理想的候选人,但我很想听听其他想法。

  1. 字符串 - 在每种语言中,您都可以使用 strftime 之类的东西将日期转换回来。
  2. i32 - 自纪元以来的时间可以转换回来。

我敢肯定,除了转换之外,还有其他事情要考虑。希望外面的人有一些好的反馈。

4

2 回答 2

10

tldr; 除非有其他理由,否则请使用适当编码的字符串。

这取决于需要什么。以下是一些差异 - 请记住,现代计算机速度很快,转换可能只是整个应用程序时间的一小部分,因此“更多处理”通常甚至无法应用测量!

字符串(使用ISO 8601或更严格的XML dateTime):

  • “更多空间”/“更多处理”(见上文)/固定大小或可变大小
  • 标准化文化中性格式
  • 人类可读且易于识别
  • 支持时区
  • 更多范围(-9999 到 9999)
  • 更多/任意精度(最高 1us)
  • 按字典顺序排列(在同一时区和兼容格式内)

纪元(UNIX 变体):

  • “更少空间”/“更少处理”/固定大小
  • 标准化的文化中性格式
  • 人类不可读(勤奋的编码人员应该能够识别“大约现在”)
  • 没有时区(甚至无法区分“本地”和 UTC)
  • 较小的范围(1970 到 2034,带符号的 32 位数字)
  • 更少/固定精度(1 秒)
  • 数字排序

儒略日是另一种与纪元时间有许多相似之处的编码。)

结论:

除非空间/性能一个经过验证的问题——这需要性能分析和功能要求——我会选择前者。今天的计算机比几年前的计算机快得多,而且比几十年前的计算机快得多。

于 2013-01-11T01:42:43.080 回答
1

只是为了后代,您可能对 temporenc ( http://temporenc.org ) 感兴趣,这是一种用于日期和时间的综合二进制编码格式。

于 2014-11-06T21:37:07.937 回答