Date 以毫秒为单位将日期存储为时间
我尝试在数据存储中表示日期对象,而不必担心Java中的日期对象。因此,我考虑只使用毫秒的时间,并存储UTC时区。我考虑过使用简单的移位例程将所有内容组合在一个长的时间段中,因为时区只有5比特(+/-12)Date 以毫秒为单位将日期存储为时间,date,time,Date,Time,我尝试在数据存储中表示日期对象,而不必担心Java中的日期对象。因此,我考虑只使用毫秒的时间,并存储UTC时区。我考虑过使用简单的移位例程将所有内容组合在一个长的时间段中,因为时区只有5比特(+/-12) 有人能看出这有什么问题吗?还有哪些数据压缩存储方案(文本表示除外)存在,它们与此相比如何 我认为您低估了时区的粒度,而高估了时间戳中对位的需求 为此,long有8个字节 假设您允许自己为时区分配2个字节。这就给你留下了6个时间戳。6*8=48位表示时间戳 48位无符号整数可以处理的最大数字是2
有人能看出这有什么问题吗?还有哪些数据压缩存储方案(文本表示除外)存在,它们与此相比如何 我认为您低估了时区的粒度,而高估了时间戳中对位的需求 为此,long有8个字节 假设您允许自己为时区分配2个字节。这就给你留下了6个时间戳。6*8=48位表示时间戳 48位无符号整数可以处理的最大数字是281474976710655 除以1000,从毫秒到秒281474976710 将该数字输入一个:10889-08-02T05:31:50+00:00 2015年是10889年
只需为时区使用2个字节。你有空间了。这将很容易让您将时区表示为分钟偏移量+-24小时。由于它是整字节的,打包代码将更容易理解。我认为你低估了时区的粒度,而高估了对时间戳中位的需求 为此,long有8个字节 假设您允许自己为时区分配2个字节。这就给你留下了6个时间戳。6*8=48位表示时间戳 48位无符号整数可以处理的最大数字是281474976710655 除以1000,从毫秒到秒281474976710 将该数字输入一个:10889-08-02T05:31:50+00:00 2015年是10889年
只需为时区使用2个字节。你有空间了。这将很容易让您将时区表示为分钟偏移量+-24小时。由于是整字节,打包代码更容易理解。尼泊尔的时区是UTC+5:45。凤凰岛是UTC+13。如何将其纳入+/-12计划?一般来说,如果您的数据存储机制(您还没有确定您使用的是什么)有一个用于存储日期/时间数据的数据类型,那么可能已经有一个从Java
date
s到该格式的映射,可以处理任何转换细微差别。尽量避免使用字符串(因为使用字符串会带来格式问题)UTC标准规定-12到+14,所以有5位(-16/+15)就足够了,但四位偏移量很有趣,所以它的7位很容易变成8位。谢谢你的提示。尼泊尔的时区是UTC+5:45。凤凰岛是UTC+13。如何将其纳入+/-12计划?一般来说,如果您的数据存储机制(您还没有确定您使用的是什么)有一个用于存储日期/时间数据的数据类型,那么可能已经有一个从Javadate
s到该格式的映射,可以处理任何转换细微差别。尽量避免使用字符串(因为使用字符串会带来格式问题)UTC标准规定-12到+14,所以有5位(-16/+15)就足够了,但四位偏移量很有趣,所以它的7位很容易变成8位。谢谢你的提示。我也做了一个8位的计算,得到了1142465年。所以你是对的。问题可能是夏令时之类的,但这取决于国家和一些与上下文无关的东西。是的,夏令时国家将其时区从一年中的一部分转移到另一部分。例如:英国在UTC+0(冬季)和UTC+1(夏季)之间转换。我还用8位进行了计算,得到了两个方向的1142465年。所以你是对的。问题可能是夏令时之类的,但这取决于国家和一些与上下文无关的东西。是的,夏令时国家将其时区从一年中的一部分转移到另一部分。例如:英国在UTC+0(冬季)和UTC+1(夏季)之间转换。