Python 3.x python中本地日期时间的儒略日数

Python 3.x python中本地日期时间的儒略日数,python-3.x,datetime,julian-date,Python 3.x,Datetime,Julian Date,正在尝试将Julian日数转换为本地日期时间python。如何做到这一点 juliandate = 2474706.5316357147 print (datetime.strptime(juliandate, '%Y%j').date()) print (datetime.strptime(juliandate, '%Y%j').date()) TypeError: strptime() argument 1 must be str, not float 一种方便的方法是使用pan

正在尝试将Julian日数转换为本地日期时间python。如何做到这一点

juliandate = 2474706.5316357147
print (datetime.strptime(juliandate, '%Y%j').date())

    print (datetime.strptime(juliandate, '%Y%j').date())
TypeError: strptime() argument 1 must be str, not float

一种方便的方法是使用pandas的
来确定日期时间
,并使用适当的来源和单位,例如

或者,如果您想坚持使用标准库,可以使用
timedelta
。朱利安纪元(公元前14713年1月1日12时)在过去有点遥远,因此它有助于为最近的日期引入偏移量,例如

from datetime import datetime, timedelta, timezone

dt_Offset = 2400000.500 # 1858-11-17
dt = datetime(1858, 11, 17, tzinfo=timezone.utc) + timedelta(juliandate-dt_Offset)
print(dt)
# 2020-11-14 19:09:07.199996+00:00
另见:

请注意,这两个结果均以UTC为单位。如果您想转换到某个时区,请查看,例如

from datetime import datetime, timedelta, timezone

dt_Offset = 2400000.500 # 1858-11-17
dt = datetime(1858, 11, 17, tzinfo=timezone.utc) + timedelta(juliandate-dt_Offset)
print(dt)
# 2020-11-14 19:09:07.199996+00:00
from zoneinfo import ZoneInfo
print(dt.astimezone(ZoneInfo('US/Eastern')))
# 2020-11-14 14:09:07.199996-05:00

# or my machine's local time (CET):
print(dt.astimezone())
# 2020-11-14 20:09:07.199996+01:00