2016-01-14 22 views
-1

我試圖找到這兩個日期或任何其他日期爲此事的區別轉換一個月整數蟒蛇

A = '11 -Feb-2003'
B = '28 -Aug- 2015'

我正在尋找一種方式(東西不那麼手動/ diy)將月份(Feb & August)轉換爲整數?

我應該創建一本詞典嗎?

更具體地說,我想把日期變成列表。

'11 -Feb-2003' 成爲[11,2,2003] = STARTDATE

'28 -Aug-2015' 成爲[28,8,2015年] =結束日期

從那裏我可以通過執行:

import datetime 
datetime.date(enddate[2], enddate[1], enddate[0]) - 
dateimdate(startdate[2], startdate[1], startdate[0]) 
+0

[將字符串轉換爲日期時間]的可能重複(http://stackoverflow.com/questions/466345/converting-string-into-datetime) – rmunn

回答

0

您可以使用strptime

import datetime as d 
d.datetime.strptime(a, '%d-%b-%Y') 
#=> datetime.datetime(2003, 2, 11, 0, 0) 
0

你可以用時間module

>>> import time 
>>> a = '11-Feb-2003' 
>>> b = '28-Aug-2015' 
>>> time.strptime(a, "%d-%b-%Y") # %b Locale’s abbreviated month name. 
time.struct_time(tm_year=2003, tm_mon=2, tm_mday=11, tm_hour=0,tm_min=0, tm_sec=0, tm_wday=1, tm_yday=42, tm_isdst=-1) 
>>> my_date = time.strptime(a, "%d-%b-%Y") 
>>> "{}-{}-{}".format(my_date.tm_mday, my_date.tm_mon, my_date.tm_year) 
'11-2-2003' 
2

您可以使用Python的datetime模塊將字符串轉換爲日期對象。

strptime函數採用字符串和日期格式。

from datetime import datetime 
print datetime.strptime('11-Feb-2003', '%d-%b-%Y') 

%d表示當月的某天作爲零填充十進制數。 (01,02,...,31)
%b是月份作爲區域設置的縮寫名稱。 (Jan,Feb,...,Dec)
%Y是以十進制數表示的世紀年。 (1970,1988,2001,2013)

Here是供您參考的所有格式說明符的列表。

0

您可以使用拆分功能:

a.split("-") 

,這將返回:

["11", "Feb", "2003"] 
0

找到兩個字符串表示日期之間的區別,首先需要將其轉換爲Python的日期類型,然後簡單地減去它們:

>>> import datetime 
>>> s1 = '11-Feb-2003' 
>>> s2 = '28-Aug-2015' 
>>> d1 = datetime.datetime.strptime(s1, '%d-%b-%Y') 
>>> d2 = datetime.datetime.strptime(s2, '%d-%b-%Y') 

現在,一旦你減去兩個日期時間o bjects,你會得到一個特殊datetime.timedelta對象:

>>> i = d2-d1 
>>> i 
datetime.timedelta(4581) 

如果打印對象你可以得到的區別的友好表示(或將其轉換爲字符串):

>>> print(i) 
4581 days, 0:00:00 

你可以也查詢對象,例如:

>>> i.days 
4581