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

时间:2009-09-24 13:47:45

标签: java datetime jodatime java-7 jsr310

我希望能够在Java中将1970年到2008年的基本毫秒参考值更改为 我可以节省数据库中的空间和独特的ID。

最好是Joda-Time。

假设的Java 7版本中即将推出的jsr-310实现了它。

在此链接的 The Discrete Timeline 部分中,它指出毫秒的计数已从1970年改为2008年

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


我能看到的唯一另一个选择是每次都以数学方式实现它 我需要查阅记录。

E.g。

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;

较小的日期将存储在数据库中

- 修改 -

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

有更好的方法来节省空间然后让人头疼 处理数以千计的长期计算请求。

我想将长片记录为日期,因为我永远不会知道我会在哪里移动 DB to,也许是MySQL =&gt;甲骨文。

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

1 个答案:

答案 0 :(得分:8)

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

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