Python datetimeで文字列と日付を変換する方法(strftime・strptime完全ガイド)

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks

Pythonでは、datetimeモジュールのstrftime()strptime()メソッドを使用することで、日付・時刻オブジェクトと文字列を相互に変換できます。この記事では、具体的な使用方法とサンプルコードを交えて詳しく解説します。

strftime()で日付・時刻を文字列に変換

strftime()メソッドは、datetimeオブジェクトを指定したフォーマットの文字列に変換します。

基本的な使用方法

from datetime import datetime

# 現在の日時を取得
now = datetime.now()
print(now.strftime('%Y-%m-%d'))        # 2024-01-15
print(now.strftime('%Y年%m月%d日'))      # 2024年01月15日
print(now.strftime('%H:%M:%S'))        # 14:30:25

よく使われるフォーマット指定子

dt = datetime(2024, 1, 15, 14, 30, 25)

print(dt.strftime('%Y'))    # 2024 (4桁年)
print(dt.strftime('%m'))    # 01 (月)
print(dt.strftime('%d'))    # 15 (日)
print(dt.strftime('%H'))    # 14 (時)
print(dt.strftime('%M'))    # 30 (分)
print(dt.strftime('%S'))    # 25 (秒)
print(dt.strftime('%A'))    # Monday (曜日)

strptime()で文字列を日付・時刻に変換

strptime()メソッドは、文字列を指定したフォーマットに従ってdatetimeオブジェクトに変換します。

基本的な使用方法

from datetime import datetime

# 文字列から日付オブジェクトを作成
date_str = '2024-01-15'
dt = datetime.strptime(date_str, '%Y-%m-%d')
print(dt)  # 2024-01-15 00:00:00

# 時刻も含む場合
datetime_str = '2024-01-15 14:30:25'
dt = datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S')
print(dt)  # 2024-01-15 14:30:25

様々なフォーマットパターン

# 日本語形式
jp_date = '2024年1月15日'
dt = datetime.strptime(jp_date, '%Y年%m月%d日')
print(dt)

# スラッシュ区切り
slash_date = '01/15/2024'
dt = datetime.strptime(slash_date, '%m/%d/%Y')
print(dt)

# 12時間制
time_12h = '2024-01-15 02:30:25 PM'
dt = datetime.strptime(time_12h, '%Y-%m-%d %I:%M:%S %p')
print(dt)

実践的な使用例

ログファイルの日付解析

log_entries = [
    "2024-01-15 10:30:00 ERROR: Connection failed",
    "2024-01-15 10:31:15 INFO: Retry attempt"
]

for entry in log_entries:
    timestamp = entry.split()[0] + ' ' + entry.split()[1]
    dt = datetime.strptime(timestamp, '%Y-%m-%d %H:%M:%S')
    print(f"エラー時刻: {dt.strftime('%Y年%m月%d日 %H時%M分')}")

日付の計算と表示

from datetime import timedelta

# 文字列から日付を作成し、1週間後を計算
start_date = '2024-01-15'
dt = datetime.strptime(start_date, '%Y-%m-%d')
end_date = dt + timedelta(weeks=1)

print(f"開始日: {dt.strftime('%Y年%m月%d日(%A)')}")
print(f"終了日: {end_date.strftime('%Y年%m月%d日(%A)')}")

エラーハンドリング

文字列のフォーマットが一致しない場合はValueErrorが発生するため、適切な例外処理を行いましょう。

def safe_strptime(date_str, format_str):
    try:
        return datetime.strptime(date_str, format_str)
    except ValueError as e:
        print(f"日付変換エラー: {e}")
        return None

result = safe_strptime('invalid-date', '%Y-%m-%d')

まとめ

  • strftime():datetimeオブジェクト → 文字列
  • strptime():文字列 → datetimeオブジェクト
  • フォーマット指定子を正確に指定することが重要
  • エラーハンドリングを適切に行う

これらのメソッドを活用することで、Pythonでの日付・時刻処理が効率的に行えます。

「らくらくPython塾」が切り開く「呪文コーディング」とは?

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks