是否有可能在Java中改变从1970年到2008年的基本毫秒参考时间(如JSR-310)

Dax*_*xon 1 java datetime jodatime java-7 jsr310

我希望能够在Java中更改1970年到2008年的基本毫秒参考,这样我就可以节省数据库中的空间和唯一的ID.

最好是Joda-Time.

所谓的Java 7版本中即将推出的jsr-310实现了它.

在此链接的"离散时间轴"部分中,它指出毫秒的计数已从1970年改为2008年

http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html


我能看到的唯一其他选项是每次需要查找记录时以数学方式实现它.

例如

DateTime dt = new DateTime();  
long now = dt.getMillis();

DateTime dt2 = new DateTime(2008, 1, 1, 0, 0, 0, 0);  
long then = dt2.getMillis();

long smallerDate = now - then;
Run Code Online (Sandbox Code Playgroud)

较小的日期将存储在DB中

- 编辑 -

所以我误读了JSR-310,这是不可能的.

有更好的方法来节省空间,然后处理成千上万的请求计算多头的头痛.

我想将长记录为日期,因为我永远不会知道将数据库移动到哪里,也许MySQL => Oracle.

所以我不想要时间戳,我只想要BigInts.

Kip*_*Kip 8

不,你不能,如果可以,那将是一个坏主意.无论数字有多大,数据库中的每个时间戳都将使用相同的空间.(假设您将数字存储为数字而不是字符串或其他内容.)

现在,如果你真的想要这个,你必须自己写.即,在将它们放入数据库之前从时间戳中减去时间,并在将它们退回时将时间添加到时间戳.但这是在寻求维护问题.(实际上,使用时间戳而不是数据库的本机DATETIME数据类型会产生问题.)