【初心者向け】Pythonで日付を自在に扱う!datetime.date.strftime()の使い方を徹底解説


Python の datetime モジュールは、日付と時刻を処理するための強力なツールを提供します。このモジュールの重要な機能の一つが strftime() メソッドです。datetime.date オブジェクトをフォーマットされた文字列に変換するために使用されます。

このチュートリアルでは、datetime.date.strftime() の詳細な使用方法について説明します。フォーマット指定子、書式設定オプション、実用的な例などを含め、包括的なガイダンスを提供します。

datetime.date.strftime() メソッドは、datetime.date オブジェクトを指定されたフォーマットに従って文字列に変換します。このメソッドは、さまざまな形式の日付表現を生成するために広く使用されています。

構文

datetime_object.strftime(format_string)

引数

  • format_string: 生成する文字列の形式を定義するフォーマット文字列
  • datetime_object: フォーマットする datetime.date オブジェクト

戻り値

フォーマットされた文字列

フォーマット指定子

strftime() メソッドは、さまざまな日付と時刻コンポーネントを表すために使用できる幅広いフォーマット指定子を提供します。以下に、最も一般的なフォーマット指定子とその説明をいくつか示します。

フォーマット指定子説明
%Y: 年 (4 桁)2024
%m: 月 (2 桁)07
%d: 日 (2 桁)14
%H: 時 (24 時間表記、2 桁)00
%M: 分 (2 桁)58
%S: 秒 (2 桁)00
%A: 曜日 (完全名)日曜日
%a: 曜日 (略名)
%B: 月の名前 (完全名)7月
%b: 月の名前 (略名)7月

書式設定オプション

strftime() メソッドは、フォーマットされた文字列をさらにカスタマイズするためのオプションを提供します。以下に、一般的なオプションとその説明をいくつか示します。

オプション説明
%: 文字 % をエスケープします。2024-07-14%
::: 次のフォーマット指定子を文字列の一部として扱います。2024-07-14::日曜日
-: コンポーネントがゼロの場合はプレフィックスにゼロを追加しません。7/14/2024
+: コンポーネントがゼロの場合はプレフィックスにプラス記号を追加しません。07/14/2024

実用的な例

以下に、datetime.date.strftime() メソッドの使用例をいくつか示します。

例 1: 現在の日付を YYYY-MM-DD 形式で取得する

import datetime

current_date = datetime.date.today()
formatted_date = current_date.strftime('%Y-%m-%d')
print(formatted_date)

出力

2024-07-14

例 2: 特定の日付を曜日と月を含む形式でフォーマットする

import datetime

specific_date = datetime.date(2023, 12, 25)
formatted_date = specific_date.strftime('%A %B %d, %Y')
print(formatted_date)

出力

月曜日 12月 25日, 2023
import datetime

current_date = datetime.date.today()
delta = datetime.timedelta(days=100)
future_date = current_date + delta
formatted_date = future_date.strftime('%d-%b-%Y')


import datetime

# 現在の日付を取得
today = datetime.date.today()

# 100日後の日付を取得
future_date = today + datetime.timedelta(days=100)

# さまざまな形式で日付をフォーマット
print(today.strftime("%Y-%m-%d"))  # 2024-07-14
print(today.strftime("%A %B %d, %Y"))  # 日曜日 7月 14日, 2024
print(today.strftime("%c"))  # 日曜日 2024-07-14 00:58:00 JST
print(future_date.strftime("%d/%m/%Y"))  # 24/10/2024

# 特定の書式設定オプションを使用
print(today.strftime("%-m/%-d/%Y"))  # 7/14/2024
print(today.strftime("%+m/%-d/%Y"))  # 07/14/2024
  1. datetime.date.today()を使用して現在の日付を取得します。
  2. datetime.timedelta(days=100)を使用して100日後の日付を計算します。
  3. strftime()メソッドを使用して、さまざまな形式で日付をフォーマットします。
  4. 書式設定オプションを使用して、フォーマットをさらにカスタマイズします。


f-文字列

f-文字列は、文字列リテラル内に式を埋め込むことができる強力なフォーマットツールです。datetime.date オブジェクトをフォーマットするのに非常に簡潔で読みやすい方法を提供します。


today = datetime.date.today()
formatted_date = f"{today:%Y-%m-%d}"
print(formatted_date)

出力

2024-07-14

長所

  • 型変換が不要
  • 柔軟性の高いフォーマット
  • 簡潔で読みやすい

短所

  • Python 3.6 以降でのみ使用可能

strftime() 関数

strftime() 関数は、C 標準ライブラリからの関数で、datetime.date オブジェクトをフォーマットするために使用できます。datetime.date.strftime() メソッドとほぼ同じ機能を提供しますが、構文が少し異なります。


import time

today = datetime.date.today()
formatted_date = time.strftime("%Y-%m-%d", today.timetuple())
print(formatted_date)

出力

2024-07-14

長所

  • 幅広いプラットフォームで利用可能
  • 標準ライブラリに組み込まれている

短所

  • 型変換が必要
  • datetime.date.strftime() メソッドよりも冗長

サードパーティライブラリ

dateutilarrow などのサードパーティライブラリは、datetime.date オブジェクトをフォーマットするための追加機能を提供します。これらのライブラリは、より複雑なフォーマットや、国際化サポートなどの機能を提供することができます。

例 (dateutil)

import dateutil.parser

today = datetime.date.today()
formatted_date = dateutil.parser.parse(today.strftime("%Y-%m-%d")).strftime('%A %B %d, %Y')
print(formatted_date)

出力

日曜日 7月 14日, 2024

長所

  • 追加機能
  • 国際化サポート
  • 複雑なフォーマット機能

短所

  • 標準ライブラリよりも複雑
  • インストールとインポートが必要

最適な代替方法の選択

使用する代替方法は、特定のニーズと要件によって異なります。

  • 複雑なフォーマットや国際化サポートが必要な場合は、サードパーティライブラリが最適です。
  • 標準ライブラリを使用したい場合は、strftime() 関数が最適です。
  • 簡潔で読みやすいフォーマットが必要な場合は、f-文字列が最適です。