我正在尝试创建一个简单的python代码来将UT转换为Julian日期,但我的代码不断吐出错误的数字,我不知道为什么,我看不出我哪里出错了。
这是我想要遵循的公式: UT to JD formula with example
dates = ['4/01/2018 01:06', '4/01/2018 01:10', '4/01/2018 01:14', '4/09/2018 00:37', '4/09/2018 00:41', '4/09/2018 00:45', '4/22/2018 00:28', '4/22/2018 00:33', '4/22/2018 00:37', '4/24/2018 00:40', '4/24/2018 00:44', '4/24/2018 00:51', '4/24/2018 00:58']
JD = []
for item in dates:
M = int(item[0])
D = int(item[2:4])
H = int(item[10:12])
if M > 2:
m = M - 3
y = int(item[5:9])
else:
y = int(item[5:9]) - 1
m = M + 9
JD += [ (1721103.5) + int((362.25) * y) + int(((30.06*m) + 0.5)) + D + (H/24) ]
print(JD)
答案 0 :(得分:0)
您可以使用Astropy时间和日期包(Time
,https://docs.astropy.org/en/stable/time)中的函数astropy.time
来做到这一点
from astropy.time import Time
JD=[]
for d in dates:
JD.append(Time(d[5:9]+'-'+d[0]+'-'+d[2:4]+' '+d[10:],format='iso',out_subfmt='date_hm').jd)
请注意,我需要将功能Time()
设置为astropy
可以理解的格式。在示例中,我使用iso
作为主要的format
,它将期望使用YYYY-MM-DD HH:MM:SS.SSS
格式的内容,因此您还需要告知out_subfmt
,我将其设置为date_hm
来指定您没有时间中的秒。定义Time(...)
后,您可以将其更改为所需的任何时间格式,例如使用Time(...).jd
表示儒略日期,或使用Time(...).mjd
表示修改后的儒略日期。
print(JD)
[2458209.5458333334, 2458209.548611111, 2458209.551388889, 2458217.5256944443, 2458217.5284722224, 2458217.53125, 2458230.519444444, 2458230.5229166667, 2458230.5256944443, 2458232.527777778, 2458232.5305555556, 2458232.535416667, 2458232.5402777777]