2016-10-04 262 views
3

我想 2010-03-01轉換爲733832將日期轉換爲序數python?

我剛剛發現這個toordinal代碼

d=datetime.date(year=2010, month=3, day=1) 
d.toordinal() 

this

但我想更多的東西一樣

d=datetime.date('2010-03-01') 
d.toordinal() 

在此先感謝

+1

看[strptime(https://docs.python.org/2 /library/datetime.html#datetime.datetime.strptime) –

回答

3

你需要的日期字符串中使用strptime,指定格式,那麼你可以調用date對象的toordinal方法:

>>> from datetime import datetime as dt 
>>> d = dt.strptime('2010-03-01', '%Y-%m-%d').date() 
>>> d 
datetime.date(2010, 3, 1) 
>>> d.toordinal() 
733832 

在這種情況下的date方法的調用是多餘的,僅保留用於使對象一致而不是datetime對象爲date對象。

如果你正在尋找處理更多的日期字符串格式,Python's strftime directives是一個很好的參考你想檢查。

3

這樣的:

datetime.strptime("2016-01-01", "%Y-%m-%d").toordinal() 
2

您需要使用strptime()時間字符串首先轉換爲datetime對象。然後調用.toordinal()datetime對象

>>> from datetime import datetime 
>>> date = datetime.strptime('2010-03-01', '%Y-%M-%d') 
>>> date.toordinal() 
733773 

上它甚至更好地創建一個函數來實現這一目標爲:

def convert_date_to_ordinal(date): 
    return datetime.strptime(date, '%Y-%M-%d').toordinal() 

convert_date_to_ordinal('2010-03-01') 
#returns: 733773