web-dev-qa-db-ja.com

2桁の年で文字列の日付を解析する方法は?

yymmddの形式で6桁の日付を表す文字列を解析する必要があります。ここで、yyの範囲は59〜05(1959〜2005)です。 time モジュールドキュメントによると、Pythonのデフォルトのピボット年は1969年であり、私にとってはうまくいきません。

ピボット年をオーバーライドする簡単な方法はありますか、または他の解決策を提案できますか?私はPython 2.7。ありがとう。

29
blah238

datetimeを使用して、通常どおり解析します。次に、オブジェクトが上限日を過ぎている場合は、オブジェクトでdatetime.datetime.replaceを使用します。100年前に調整します。

import datetime
dd = datetime.datetime.strptime(date,'%y%m%d')
if dd.year > 2005:
   dd = dd.replace(year=dd.year-100)
33
mgilson

以下を実行することもできます。

today=datetime.datetime.today().strftime("%m/%d/%Y")
today=today[:-4]+today[-2:]
3
anajem
import datetime
date = '20-Apr-53'
dt = datetime.datetime.strptime( date, '%d-%b-%y' )
if dt.year > 2000:
    dt = dt.replace( year=dt.year-100 )
                     ^2053   ^1953
print dt.strftime( '%Y-%m-%d' )
3
Pic

独自のピボットを使用して、世紀を日付の前に追加します。

  year = int(date[0:2])
  if 59 <= year <= 99:
      date = '19' + date
  else
      date = '20' + date

%Yの代わりに%yディレクティブでstrptimeを使用します。

3
msw

最近、同様のケースがあり、次の基本的な計算とロジックになりました。

pivotyear = 1969
century = int(str(pivotyear)[:2]) * 100

def year_2to4_digit(year):
    return century + year if century + year > pivotyear else (century + 100) + year
1
wittrup