Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
日時.strftime() / datetime.strptime()
日時オブジェクトを任意の書式の文字列に変換したり、書式付き文字列から日時オブジェクトを生成したりする関数です。
構文
from datetime import datetime # 日時オブジェクトを書式付き文字列に変換します。 文字列 = 日時オブジェクト.strftime(書式文字列) # 書式付き文字列から日時オブジェクトを生成します。 日時 = datetime.strptime(文字列, 書式文字列)
主な書式コード一覧
| 書式コード | 概要 |
|---|---|
| %Y | 4桁の年(例: 『2025』)です。 |
| %m | 2桁の月(01〜12)です。 |
| %d | 2桁の日(01〜31)です。 |
| %H | 24時間制の2桁の時(00〜23)です。 |
| %M | 2桁の分(00〜59)です。 |
| %S | 2桁の秒(00〜59)です。 |
| %A | 英語の曜日名(例: 『Monday』)です。 |
| %a | 英語の短縮曜日名(例: 『Mon』)です。 |
| %B | 英語の月名(例: 『April』)です。 |
| %b | 英語の短縮月名(例: 『Apr』)です。 |
| %I | 12時間制の時(01〜12)です。 |
| %p | 『AM』または『PM』です。 |
| %f | マイクロ秒(000000〜999999)です。 |
サンプルコード
from datetime import datetime
# 現在日時を様々な書式で表示します。
now = datetime.now()
# 日本語風の書式
print(now.strftime('%Y年%m月%d日 %H時%M分%S秒'))
# 例: 『2025年04月15日 14時30分00秒』と出力されます。
# ISO 8601 形式
print(now.strftime('%Y-%m-%dT%H:%M:%S'))
# 例: 『2025-04-15T14:30:00』と出力されます。
# スラッシュ区切りの日付
print(now.strftime('%Y/%m/%d'))
# 例: 『2025/04/15』と出力されます。
# 12時間制で曜日付き
print(now.strftime('%Y年%m月%d日 (%A) %I:%M %p'))
# 例: 『2025年04月15日 (Tuesday) 02:30 PM』と出力されます。
# strptime() で文字列から日時を生成します。
date_str = '2025-04-15 09:30:00'
dt = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
print(dt) # 『2025-04-15 09:30:00』と出力されます。
print(type(dt)) # 『<class 'datetime.datetime'>』と出力されます。
# 日本語形式の文字列を解析します。
jp_str = '2025年4月15日'
dt2 = datetime.strptime(jp_str, '%Y年%m月%d日')
print(dt2.year) # 『2025』と出力されます。
print(dt2.month) # 『4』と出力されます。
# Webフォームで受け取った日付を変換する例
form_input = '15/04/2025'
dt3 = datetime.strptime(form_input, '%d/%m/%Y')
formatted = dt3.strftime('%Y-%m-%d')
print(formatted) # 『2025-04-15』と出力されます。
概要
『strftime()』は「string format time」の略で、日時オブジェクトを任意のフォーマットの文字列に変換します。『strptime()』は「string parse time」の略で、書式付き文字列から日時オブジェクトを生成します。どちらも同じ書式コードを使うため、覚えておくと両方に活用できます。
書式コードはOSによって挙動が微妙に異なる場合があります。たとえば月や日の先頭ゼロを取り除くコード(Linuxの『%-m』)はWindowsでは動作しません。ゼロ埋めが不要な場合は文字列を変換後に『lstrip("0")』で除去するほうが移植性が高いです。
日時オブジェクトの生成は『datetime.datetime() / datetime.date() / datetime.time()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。