我需要从 java 中存储为 1581 年 5 月 14 日的 elasticsearch 获取日期。我有来自elasticsearch的日期,以毫秒为单位(-12264134400000)。在Java中转换为日期时,日期计算错误。我知道这与格鲁吉亚和儒略历有关,但无法找到解决方案。我使用的代码很简单:
Date dt = new Date(-12264134400000L);
上面给出的是 04-May-1581 而不是 14-May-1581。
为了提供更多详细信息,我在 Oracle 数据库中输入了许多此类日期,这些日期已移至 Elasticsearch。我从 Elasticsearch 获取日期的方式以毫秒为单位(这就是它从 lucene 索引读取的方式。将其视为约束)。所以我想将毫秒转换回原始日期,以便我可以将其与另一个日期进行比较。因此,如果elasticsearch将14-May-1581转换为-12264134400000,我想要14-May-1581回来。
最佳答案
您应该使用 Java 8 中引入的 java.time
包:
LocalDate date =
Instant.ofEpochMilli(longValue).atZone(ZoneId.systemDefault()).toLocalDate();
这给出了预期的结果
关于java - 将纪元以来的毫秒数转换为 1582 年之前的日历日期时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219104/