从儒略字符串中获取日期和时间
Get date and time out of julian string
我有一个朱利安日期列表:
42304.90625
我是这样开始的:
jDate=42304.90625
jDate=jDate[0:5]
print(datetime.datetime.strptime(jDate, '%y%j').date()
如何提取时间?
有人可以帮助我吗?
谢谢
根据您在转换中使用 %j
,我认为您的意思是 YYDDD 形式的大型机 "Julian" 日期。首先将值拆分为整数部分和小数部分:
>>> date, time = divmod(jDate, 1.0)
>>> date
42304.0
>>> time
0.90625
像这样使用 divmod()
不适用于负数,但 Julian 日期永远不会是负数。现在将日期转换为字符串。正确的做法是:
date = str(int(date))
这样做:jDate=jDate[0:5]
不起作用 因为 jDate
是一个浮点数。 (您的帖子标题说它是一个字符串,但您的代码说它是一个浮点数。)
接下来将小数天换算成秒:
>>> datetime.timedelta(days=time)
datetime.timedelta(0, 78300)
并将两者相加:
>>> datetime.datetime.strptime(date, '%y%j') + datetime.timedelta(days=0.90625)
datetime.datetime(2042, 10, 31, 21, 45)
我有一个朱利安日期列表: 42304.90625
我是这样开始的:
jDate=42304.90625
jDate=jDate[0:5]
print(datetime.datetime.strptime(jDate, '%y%j').date()
如何提取时间? 有人可以帮助我吗?
谢谢
根据您在转换中使用 %j
,我认为您的意思是 YYDDD 形式的大型机 "Julian" 日期。首先将值拆分为整数部分和小数部分:
>>> date, time = divmod(jDate, 1.0)
>>> date
42304.0
>>> time
0.90625
像这样使用 divmod()
不适用于负数,但 Julian 日期永远不会是负数。现在将日期转换为字符串。正确的做法是:
date = str(int(date))
这样做:jDate=jDate[0:5]
不起作用 因为 jDate
是一个浮点数。 (您的帖子标题说它是一个字符串,但您的代码说它是一个浮点数。)
接下来将小数天换算成秒:
>>> datetime.timedelta(days=time)
datetime.timedelta(0, 78300)
并将两者相加:
>>> datetime.datetime.strptime(date, '%y%j') + datetime.timedelta(days=0.90625)
datetime.datetime(2042, 10, 31, 21, 45)