2016-06-10 324 views
2

我有一個字符串爲Julian日期像"16152"意義152'nd 2016或"15234"天意義的2015年Python3轉換Julian日期,以基準日

234'th一天,我怎樣才能將這些Julian日期一樣格式化20/05/2016使用Python 3標準庫?

我可以像這樣得到2016年:date = 20 + julian[0:1],其中julian是包含Julian日期的字符串,但是我如何根據1月1日計算其餘值?

+0

無關,但[Julian日](https://en.wikipedia.org/wiki/Julian_day)是另一種動物:*朱利安日是主要由天文學家使用的朱利安時期開始以來的連續天數* –

+1

反向操作:[從python中的字符串日期中提取年份和Julian日](http://stackoverflow.com/a/25831416/4279) – jfs

回答

4

.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' 
2

嗯,首先,創建一個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

+0

如果您在對象上調用'str'函數是不必要的重新印刷它。 'print'函數會自己調用'__str__'方法。例如:'print(datetime.now())'就足夠了 – Leva7