给定特定格式的日期,我如何确定几个月的年龄?

时间:2013-06-14 16:33:55

标签: python datetime

我有一个脚本,它以2013年3月4日的形式获取一个字符串。如何将其转换为我可以用来确定日期年龄(以月为单位)的日期?我还希望能够以十进制形式(即2.8个月)的月份。

就编码而言,我不知道该怎么做。我已经阅读过可以做这样的事情的不同库,但我不确定哪一个是最好的。

编辑:假设一个月有30天。这就是我到目前为止所做的:

import time
def ageinmonths( str )
    return time.today() - time.strptime("3/4/2013", "%b %d %y")

5 个答案:

答案 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()。减去。面条会导致数月。