Datetime 在Apache Thrift中,日期对象应该如何表示

Datetime 在Apache Thrift中,日期对象应该如何表示,datetime,thrift,cross-language,Datetime,Thrift,Cross Language,在节俭IDL中没有日期类型。表示日期对象的最佳跨语言机制是什么。我认为有两个理想的候选人,但我想听听其他的想法 字符串-在每种语言中,您都可以使用类似strftime的东西来转换日期 i32-自历元起的时间可以转换回 我相信除了转换,还有其他事情需要考虑。希望外面的人有一些好的反馈。tldr除非有其他原因,否则请使用适当的编码字符串 这取决于需要什么。这里有一些不同之处-请记住,现代计算机速度很快,转换可能只占整个应用程序时间的一小部分,因此“更多处理”通常甚至不可测量 字符串(带或更严格):

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

  • 字符串-在每种语言中,您都可以使用类似strftime的东西来转换日期
  • i32-自历元起的时间可以转换回
    我相信除了转换,还有其他事情需要考虑。希望外面的人有一些好的反馈。

    tldr除非有其他原因,否则请使用适当的编码字符串

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

    字符串(带或更严格):

    • “更多空间”/“更多处理”(见上文)/固定大小或可变大小
    • 标准化文化中性格式
    • 可读性强,易于识别
    • 支持时区
    • 更多范围(-9999至9999)
    • 更高/任意精度(高达1U)
    • 按字典顺序排列(在相同时区和兼容格式内)
    Epoch(UNIX变体):

    • “更少空间”/“更少处理”/固定大小
    • 标准化文化中性格式
    • 非人类可读(勤勉的程序员应该能够识别“关于现在”)
    • 没有时区(甚至无法区分“本地”和UTC)
    • 范围较小(1970年至2034年,带符号32位数字)
    • 小于/固定精度(1秒)
    • 数字顺序
    (这是另一种编码,与大纪元时间有许多相似之处。)

    结论:


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

    为了子孙后代,您可能会对一种用于日期和时间的综合二进制编码格式temporenc()感兴趣。

    使用i64来表示数据对象。就像这个答案一样。人类可读的日期时间表示节省了大量调试时间。这可能永远不会被读取,但“无时区”是UNIX时间戳的优点之一。所有时间始终以UTC表示。简单,容易,有效,没有歧义。