如何将UTC和经度转换为太阳能本地时间python

时间:2017-10-19 18:12:03

标签: python python-2.7 datetime utc astropy

我正在尝试将我的UTC时间和经度转换为python中的平均太阳当地时间。

输入:

utc = ['2000-08-20 07:15:12.000']  #utc time

lon = [-89.91054415]               #longitude

我使用astropy.time来获取我的utc时间,这是一个字符串。

2 个答案:

答案 0 :(得分:0)

我找到了使用pyephem的解决方案datasets have within class imbalance。如果这是一个问题,它确实考虑了夏令时。

from ephem import Sun, Observer, pi, hours

dt = '2016/08/27 19:19'

sun = Sun()
sun.compute(dt)

boston = Observer()
boston.lat = '42.37'
boston.lon = '-71.03'
boston.date = dt
ra, dec = boston.radec_of('0', '-90')

print 'Sun right ascension:', sun.ra
print 'Boston nadir right ascension:', ra
print 'Solar time:', hours((ra - sun.ra) % (2 * pi)), 'hours'

答案 1 :(得分:0)

天文年历的解释性补充第3版。第239页指出,当地的平均太阳时,LMSoT与UT和观察者的东经有关

LMSoT = UT +ƛ

UT通常被认为是指UT1。要将UTC转换为UT1,请参阅https://www.iers.org/IERS/EN/DataProducts/EarthOrientationData/eop.html

上的公告A.

2016/08/27 UT1 - UTC = -0.243031。原始海报仅工作到毫秒,因此舍入到-0.243。 2016/08/27 19:19:00.000 UTC = 19:18:59.757 UT1。

波士顿纬度,-71.03°,转换为时间,= -4 h 44 m 7.200 s

Boston LMSoT = 19:18:59.757 - 4:44:7.2000 = 14:34:52.557

原始海报可以简化程序,具体取决于所需的实际精确度。特别是,UTC始终在UT1的0.9秒内,因此如果不需要精确到秒,则可以跳过查找UT1-UTC的步骤。