我正在尝试编写一个原型文件,该文件有一个Date字段,该字段未被定义为协议缓冲区中的类型。
我已阅读以下文章,但我找不到适合我的合适解决方案: What the best ways to use decimals and datetimes with protocol buffers?
我正在尝试将proto文件转换为java。
答案 0 :(得分:4)
我在链接帖子中的回答主要涉及protobuf-net;但是,既然你是从java那里来的,我建议:保持简单。
对于日期,我建议只使用时间(可能是几毫秒)进入一个时代(1970年1月1日是传统的)。有时,只是相同单位的大小(毫秒等)。对于十进制,可以简单地通过缩放来使用固定点 - 所以可以将1.05视为长1050并且始终断言3dp(因此是固定点)。
这是简单实用的,涵盖了大多数常见场景,而不会使事情变得复杂。
答案 1 :(得分:3)
我并没有出售这个想法,但我真的没有出售关于存储日期(时间不是时间)作为时间戳的想法,所以这是我的建议。
将您的日期转换为人类可读的整数(例如2014-11-3
变为20141103
)并存储此整数值。它包含您需要的数据,创建和解析简单,占用空间极小。此外,它是有序的,并且具有日期与有效值的一对一映射(已授予,无效数字可能,例如20149999
,但这些很容易检测)。相比之下,每天约有86400个有效时间戳。
注意:有discussion on DBA SE批评这种日期存储方法,但在这种情况下存在一种专门的日期类型,这显然不是这种情况。