如何将儒略日期转换为标准日期?

2024-10-05 12:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串作为Julian日期,比如"16152"表示2016年第152天,或者"15234"表示2015年第234天。

如何使用Python 3标准库将这些Julian日期转换为类似20/05/2016的格式?

我可以得到这样的2016年:date = 20 + julian[0:1],其中julian是包含儒略日期的字符串,但是如何根据1月1日计算其余的日期呢?


Tags: 字符串标准date格式julian儒略
3条回答

首先,创建一个datetime对象(从模块datetime

from datetime import datetime
from datetime import timedelta
julian = ... # Your julian datetime
date = datetime.strptime("1/1/" + jul[:2], "%m/%d/%y") 
# Just initializing the start date, which will be January 1st in the year of the Julian date (2 first chars)

现在添加从开始日期开始的天数:

daysToAdd = int(julian[2:]) # Taking the days and converting to int
date += timedelta(days = daysToAdd - 1)

现在,您可以按原样打印:

print(str(date))

或者可以使用strftime()函数。

print(date.strftime("%d/%m/%y"))

阅读有关strftime格式字符串here的更多信息

^{}方法支持每年的格式:

>>> import datetime
>>>
>>> datetime.datetime.strptime('16234', '%y%j').date()
datetime.date(2016, 8, 21)

然后可以使用^{}重新格式化日期

>>> date = datetime.date(2016, 8, 21)
>>> date.strftime('%d/%m/%Y')
'21/08/2016'

我用这个将Juian日期改为xml xsd:datetime

def julianDate2ISO8601(d, offset='+00:00'): """ return ISO8601 formated datetime from julian date optional offset [+|-]hh:mm """ d = str(d) # make sure it is a string # replace leading number with correct century centuryArray = ['19','20','21'] d = centuryArray[int(d[:1])] + d[1:] # format string to iso 8601 datetime return datetime.datetime.strptime(d, '%Y%j').date().strftime( '%Y-%m-%dT00:00:00') + offset

相关问题 更多 >

    热门问题