我想用java把儒略秒转换成日期



我从设备1348398464中获取这样的数据,其日期时间如下时间:11:07:44

日期:28:09:2022

我不知道是怎么解码的

Julian?正如世界上大多数人在1582年左右停止使用的《儒略历》(使用格里高利历,这是一个非常小的调整(一样,俄罗斯在1918年停止使用(解释了为什么十月革命实际上是在11月,但在俄罗斯,仍然是在儒略历,对他们来说是十月(,哪一种仍然只用于东正教程序(如选择宗教日期(,以及摩洛哥的部分地区?

看起来。。不大可能发生的

java.time软件包不再包括对Julian的开箱即用支持。java.time所基于的库(JSR-310(确实如此。额外的零件仍然可以作为ThreeTen额外零件提供。

包括它,你就可以做到这一点。

在基础上,1348398464似乎表示自1980年午夜UTC以来经过的秒数,但使用儒略日历。

使用公历:

int x = 1348398464;
Instant epoch = ZonedDateTime.of(LocalDate.of(1980, 1, 1), 
LocalTime.MIDNIGHT, ZoneOffset.UTC).toInstant();
Instant mark = epoch.plusSeconds(x);
System.out.println(mark);

1980年是一个奇怪的时代(使用计算机的世界几乎总是使用1970年(。

获取接近您想要的2022-09-23T11:07:44Z。5天的差异可能确实是因为你在儒略历上(或者纪元是1980年1月5日午夜,这很奇怪(。

运行相同的代码,但使用额外的3/10中的julian年表:

Instant epoch = ZonedDateTime.of(LocalDate.of(1980, 1, 1), 
LocalTime.MIDNIGHT, ZoneOffset.UTC).toInstant();
ChronoZonedDateTime<JulianDate> mark = JulianChronology.INSTANCE.zonedDateTime(epoch, ZoneOffset.UTC);
int x = 1348398464;
mark = mark.plusSeconds(x);
System.out.println(mark);

你可能不得不摆弄epoch值;可能是1980-1-1在julian中,而不是像上面的代码那样在gregorian中(以Instant epoch = Instant.ofEpochMilli(0)开始,然后使julian过期,然后调用.addYears(10),再调用.addSeconds(1348398464),看看是否是这样(。

相关内容

  • 没有找到相关文章

最新更新