我从设备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)
,看看是否是这样(。