【问题标题】:How to convert J2000 time to UTC in python?如何在python中将J2000时间转换为UTC?
【发布时间】:2017-09-29 15:24:27
【问题描述】:

我有时间以 J2000 格式,即。 2000 年 1 月 1 日中午后的秒数,我想将其转换为数组中的 UTC 时间,格式为 [年-月-日小时:分钟:秒.毫秒]。 AstroPy 中是否有一些函数或类似的东西来进行转换?

输入: J2000时间:559889620.293秒

期望的输出: UTC时间:2017-09-28 16:53:40.293

【问题讨论】:

  • 如果您的意思是 J2000,它是 defined,即 2000 年 1 月 1 日 12:00,地球时间。这相当于 11:58:56.171 UT1。如果有关系,您可以查看当时 UT1 和 UTC 之间的差异,但不会超过 ±0.9 s。您还需要考虑在计算秒数时是否包含闰秒。

标签: python python-2.7 time utc astropy


【解决方案1】:

如果你想使用astropy,你可以使用Time and TimeDelta from astropy.time

>>> from astropy.time import TimeDelta, Time
>>> from astropy import units as u
>>> (Time(2000, format='jyear') + TimeDelta(559889620.293*u.s)).iso
'2017-09-28 16:53:35.293'

如果您不想记住朱利安日期(2000 年 1 月 1 日中午)的基线是什么,Time(2000, format='jyear') 是一个不错的选择。

【讨论】:

【解决方案2】:

偏移量是恒定的,所以你可以添加它:

>>> OFFSET = datetime(2000,1,1,12) - datetime(1970,1,1)
>>> datetime.utcfromtimestamp(559889620.293) + OFFSET
datetime.datetime(2017, 9, 28, 16, 53, 40, 293000)

【讨论】:

【解决方案3】:

您可以简单地将timedelta 添加到基础datetime

import datetime
datetime.datetime(2000, 1, 1, 12, 0) + datetime.timedelta(seconds=559889620.293)

返回:

datetime.datetime(2017, 9, 28, 16, 53, 40, 293000)

【讨论】:

    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 2021-11-15
    • 2013-12-04
    • 2017-04-27
    • 2021-10-10
    • 2011-05-02
    • 1970-01-01
    相关资源
    最近更新 更多