如何将Julian日期转换为标准日期?

时间:2016-06-10 08:52:04

标签: python string date python-3.x

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

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

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

4 个答案:

答案 0 :(得分:6)

.strptime()方法支持年中的日期格式:

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

然后您可以使用strftime()重新格式化日期

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

答案 1 :(得分: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

答案 2 :(得分:0)

简便方法

  • 从常规日期转换为儒略日期

print datetime.datetime.now().strftime("%y%j")

  • 从儒略日期转换为常规日期

print datetime.datetime.strptime('19155', '%y%j').strftime("%d-%m-%Y")

答案 3 :(得分:0)

我用它来将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