我尝试在数据存储中表示日期对象,而没有Java中Date对象的麻烦。所以我想只用一毫秒的时间来存储UTC时区。我考虑使用简单的移位例程将所有内容组合在一起,因为时区只有5位(+/- 12)。
有人可以看到有任何问题吗?还存在哪些其他紧凑的存储方案(除了文本表示)以及它们与此相比如何?
答案 0 :(得分:0)
我认为您正在评估您所在时区的粒度以及对时间戳中位数的需求进行评估。
long为此目的有8个字节。
假设您允许自己2个字节用于时区。这留给你6个时间戳。 6 * 8 = 48位时间戳。
48位无符号整数可以处理的最大数字是281474976710655。
除以1000以从毫秒到秒281474976710
将该号码打入epoch converter:10889-08-02T05:31:50 + 00:00
那是我们在2015年的10,889年。
只需使用2个字节作为时区。你有空间。这将很容易让您将时区表示为分钟偏移+ -24小时。由于它是整个字节,因此包装代码将更容易理解。