将UT(世界时)转换为JD(朱利安日期)(天文学)

时间:2018-05-04 17:29:24

标签: python python-3.x astronomy

我正在尝试创建一个简单的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)

1 个答案:

答案 0 :(得分:0)

您可以使用Astropy时间和日期包(Timehttps://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]