0

2013 年 3 月 4 日の形式で文字列を取得するスクリプトがあります。それを日付に変換して、その日付の年齢 (月単位) を判断するために使用するにはどうすればよいですか? また、月を 10 進数形式 (つまり、2.8 か月) で表示できるようにしたいと考えています。

これをコーディングする限り、何をすべきかわかりません。このようなことができるさまざまなライブラリについて読んだことがありますが、どれが最適かはわかりません。

編集: 1 か月が 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 に答える
0

str.split('/') を使用してから、リストの各インデックスをそのように操作します。
この方法は、必要な値を計算するために、日/月/年を個別に操作できることを意味します。

于 2013-06-14T16:38:18.437 に答える
0

高レベルのアプローチ: 日付を datetime オブジェクトに変換します。datetime.now() を呼び出します。減算します。麺の結果は月に。

于 2013-06-14T16:41:20.903 に答える