- 背景
对于看到这份文档者,关于儒略日是什么,相信已经是知道什么是儒略日,如果你对儒略日是什么不了解,请自行百度。写这份文档的目的只是在记录怎么在java或kotlin下进行儒略日与时间的互相转换。
儒略日的转换,网上提供的方法,大都是自己写代码,虽然自己编写转换程序并不困难,但没有必要重复发明轮子,因为儒略日的转换非常简单,也不想自己维护一套代码。对python,有着现成的库可以完成转换,在网上找了一圈java相关的库,几乎全是自己编写代码,最终找到jodd可以处理儒略日的转换。本文档的代码是kotlin编写。
- 配置grale
jodd在5.0,4不在支持jodd.datetime.JDateTime,由jodd-core中的jodd.time.JulianDate进行处理,jodd是第三库,由于我使用的是gradle,下面只给出gradle的配置方法,其他的配置方法,可以查看jodd的官网。//compile 'joda-time:joda-time:2.10' compile 'org.jodd:jodd-core:5.0.4'
- 转换
import jodd.time.JulianDate import java.time.ZoneId import java.time.ZonedDateTime fun main(args: Array<String>) { // 得到儒略日,儒略日是以格林尼治的区时为准,所以需要进行时区转换 val defaultZone = ZoneId.systemDefault() val localT = ZonedDateTime.of(2018, 9, 15, 20, 0, 0, 0, defaultZone) val utcT = localT.withZoneSameInstant(ZoneId.of("UTC")) val jdT = JulianDate.of(utcT.toLocalDateTime()) println(jdT) // 从儒略日得到日期,得到的是格林尼治的时间,要得到本地时间,需要进行时区转换,用用java.time库进行时区转换 val jdT1 = JulianDate(2458377.0) println(jdT1.toLocalDateTime()) }
转载于:https://blog.51cto.com/penguintux/2175671