我有一个脚本,它以2013年3月4日的形式获取一个字符串。如何将其转换为我可以用来确定日期年龄(以月为单位)的日期?我还希望能够以十进制形式(即2.8个月)的月份。
就编码而言,我不知道该怎么做。我已经阅读过可以做这样的事情的不同库,但我不确定哪一个是最好的。
编辑:假设一个月有30天。这就是我到目前为止所做的:
import time
def ageinmonths( str )
return time.today() - time.strptime("3/4/2013", "%b %d %y")
答案 0 :(得分:3)
这是kzh的答案,但是增加了海报想要的小数。
from datetime import datetime
from dateutil.relativedelta import relativedelta
date = '3/4/2013'
dt = datetime.strptime(date,'%m/%d/%Y')
r = relativedelta(datetime.now(), dt)
months = r.years * 12 + r.months + r.days/30.
print months
>>>> 3.33333333333
答案 1 :(得分:2)
这样的事情:
>>> from datetime import datetime
>>> from dateutil.relativedelta import relativedelta
>>> dt = datetime.strptime('3/4/2013','%m/%d/%Y')
>>> r = relativedelta(datetime.now(), dt)
>>> months = r.years * 12 + r.months + r.days/30
答案 2 :(得分:2)
编辑:,以实现跨大西洋的日期格式化和谐!
import datetime,locale
def transatlantic_age_in_months(datestring):
datefmt = locale.nl_langinfo(locale.D_FMT)
dob = datetime.datetime.strptime(datestring,datefmt[:-2]+'%Y')
dt = dob.today() - dob
return dt.days/30.
答案 3 :(得分:0)
我会使用str.split('/')然后以这种方式操作列表的每个索引。
这意味着你可以单独使用日/月/年来计算必要的值。 / p>
答案 4 :(得分:0)
高级方法: 将您的日期转换为日期时间对象。调用datetime.now()。减去。面条会导致数月。