0

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

就编码而言,我完全不确定该怎么做。我已经阅读过可以执行此类操作的不同库,但我不确定哪个是最好的。

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

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

5 回答 5

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
于 2013-06-14T17:15:56.450 回答
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.
于 2013-06-14T17:07:51.927 回答
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
于 2013-06-14T16:57:35.313 回答
0

我会使用 str.split('/') 然后以这种方式操作列表的每个索引。
这种方式意味着您可以单独使用日/月/年来计算必要的值。

于 2013-06-14T16:38:18.437 回答
0

高级方法:将您的日期转换为日期时间对象。调用 datetime.now()。减去。面条结果成几个月。

于 2013-06-14T16:41:20.903 回答