在python中将月份转换为整数

时间:2016-01-14 04:46:04

标签: python datetime

我正在尝试找出这两个日期之间的差异或任何其他日期

a = '11 -Feb-2003'
b = '28 -Aug-2015'

我正在寻找一种方法(不是那么手动/ diy)将月份(2月和8月)转换为整数?

我应该创建字典吗?

更具体地说,我想把日期变成清单。

'11 -Feb-2003'变为[11,2,2003] = startdate

'28 -Aug-2015'成为[28,8,2015] = enddate

从那里我可以通过执行来计算两者之间的天数差异:

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

6 个答案:

答案 0 :(得分:2)

您可以使用Python的datetime模块将字符串转换为日期对象。

strptime函数采用字符串和日期格式。

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

%d表示月份日期作为零填充十进制数。 (01,02,...,31)
%b是Month作为区域设置的缩写名称。 (1月,2月,...,12月)
%Y表示年份,世纪为十进制数字。 (1970年,1988年,2001年,2013年)

Here是供您参考的所有格式说明符的列表。

答案 1 :(得分:0)

您可以使用strptime

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

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

答案 3 :(得分:0)

您可以使用拆分功能:

a.split("-")

然后会返回:

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

答案 4 :(得分: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')

现在,一旦你减去两个日期时间对象,你将获得一个特殊的datetime.timedelta对象:

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

如果您打印对象(或将其转换为字符串),您可以友好地表示差异:

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

您还可以查询对象,例如:

>>> i.days
4581

答案 5 :(得分:0)

import datetime
datetime.datetime.strptime(month, '%B').month

使用%B表示月份的全名(例如1月),使用%b表示缩写的月份(例如1月)