HOWTO · Python
Python で現在の年を取得する
Python で複数の簡単な方法で今年を取得する方法を学ぶ
このページの内容
Python 標準ライブラリの datetime モジュールを使うと、現在の年を取得できます。年を文字列として使う場合は datetime.datetime.now() を呼び出し、日付を strftime("%Y") でフォーマットします。整数が必要な場合は datetime.date.today() を呼び出し、その year 属性を読み取ります。どちらの方法も、プログラムを実行しているマシンで利用できる日付を使うため、そのマシンの日付が年をまたぐと、返される年も変わります。
strftime() で現在の年を取得する
strftime() メソッドは、日付や時刻を文字列にフォーマットします。%Y ディレクティブを使うと、年を4桁の文字列にできます。表示したり、ほかの日付要素と組み合わせてフォーマットしたりする場合に便利です。次の例では、現在の日付を取得して年を出力します。
次の例を実行してください。コードと出力はそのまま英語で表示され、出力ラベル Current year: も英語のままです。
import datetime
current_date = datetime.datetime.now().date()
current_year = current_date.strftime("%Y")
print(f"Current year: {current_year}")
Current year: 2026
ここでは、datetime.datetime.now() で現在のローカル日時を取得し、.date() で日付部分を取り出します。その日付に対して strftime("%Y") を呼び出すと、数値ではなく文字列が返されます。たとえば、実行時の現在の年が2026年なら、current_year は文字列 "2026" になります。表示される年は実行環境の時計によって決まるため、サンプルの値が後の年にも現在の値として使えるとは限りません。
ほかの日付情報を含めるには、追加のフォーマットディレクティブを使えます。たとえば、%A %Y は曜日名の後に年をフォーマットします。曜日はフォーマット対象の日付によって異なります。利用できるディレクティブとプラットフォームごとの注意事項については、Python の strftime() および strptime() のフォーマットコードに関するドキュメントを参照してください。
year 属性で現在の年を取得する
年を数値として扱うほうが便利な場合は、datetime.date オブジェクトを取得して、その year 属性を読み取ります。datetime.date.today() は今日の日付を直接返すため、この方法なら datetime.datetime の値を作ってから日付に変換する必要がありません。
次の例を実行してください。コードと出力はそのまま英語で表示され、出力ラベル Current year: も英語のままです。
import datetime
current_date = datetime.date.today()
current_year = current_date.year
print(f"Current year: {current_year}")
Current year: 2026
ここでの current_year は整数です。strftime("%Y") が返す文字列とは異なります。整数は計算や比較に使い、表示用にフォーマットしたり、ほかの文字列と結合したりするときはテキストに変換します。datetime.datetime.now().date() と datetime.date.today() はどちらも、year 属性から date.year を読み取れる日付オブジェクトを返します。すでに扱っている日付に応じて式を選んでください。たとえば、コードがすでに日付を保持しているなら、今日の日付を改めて取得するのではなく、そのオブジェクトの属性を読み取ります。この属性が示すのはその日付オブジェクトの年です。過去または未来の日付を表すオブジェクトなら、現在の年とは異なる場合があります。
これらの例では、マシンのローカル日付を使います。特定のタイムゾーンでの年が必要な場合は、タイムゾーン情報を持つ datetime から始め、astimezone() でそのタイムゾーンに変換してから、変換後の datetime の年を読み取るかフォーマットします。年の変わり目付近では、同じ瞬間でもタイムゾーンによって暦上の日付が異なり、年も変わることがあるため、この変換が重要です。通常の date にはタイムゾーン情報がないので、ある瞬間から日付を求める場合は、先にタイムゾーンを決めてください。