1. ホーム
  2. python

[解決済み] 前月末日

2022-04-22 13:05:42

質問

Pythonで前月の日付を取得しようとしています。 以下は私が試したことです。

str( time.strftime('%Y') ) + str( int(time.strftime('%m'))-1 )

しかし、この方法は2つの理由からよくありません。まず、2012年の2月について(201202ではなく)20122を返します。そして次に、1月について12ではなく0を返します。

私はこの問題をbashで解決しました。

echo $(date -d"3 month ago" "+%G%m%d")

もしbashにこの目的のためのビルトインの方法があるのなら、より多くの機能を持つpythonは、この目的を達成するために自分自身のスクリプトを書くことを強いるよりも良いものを提供するべきだと思うのです。もちろん、私はこのようなことをすることができます。

if int(time.strftime('%m')) == 1:
    return '12'
else:
    if int(time.strftime('%m')) < 10:
        return '0'+str(time.strftime('%m')-1)
    else:
        return str(time.strftime('%m') -1)

私はこのコードをテストしていませんし、いずれにしても使いたくありません(他に方法が見つからない限りは:/)。

ありがとうございました。

解決方法は?

データタイム とdatetime.timedeltaクラスはあなたの味方です。

  1. 今日を探す
  2. を使い、今月の初日を探します。
  3. timedeltaを使って、1日だけ、前月の最終日までバックアップする。
  4. 探しているYYYYMMの文字列を表示します。

こんな感じで。

 import datetime
 today = datetime.date.today()
 first = today.replace(day=1)
 lastMonth = first - datetime.timedelta(days=1)
 print(lastMonth.strftime("%Y%m"))

201202 が印刷されます。