(最終更新日:2023年7月)
✔このような方へ向けて書かれた記事となります
「Pythonのstrftimeとは何だろう?」
「strftimeの具体的な使い方を知りたい」
「strftimeを使ったコードの実例を参照したい」
✔当記事でお伝えすること
- Pythonのstrftimeの基本知識
- strftimeの具体的な書き方と応用方法
- strftimeを用いた実際のコード例
当記事では、Pythonのstrftimeの基本と、その機能を最大限に活用するための手法から具体的なコード例まで、詳しく解説します。
ぜひ最後までご覧ください。
Pythonのstrftimeを理解するための前提知識
こちらでは、Pythonとその日時処理関数であるstrftimeの重要性についてお伝えしていきます。
- Pythonとは
- strftime関数とは
- strftimeの重要性
Pythonとは
Pythonは、多くの科学技術計算、データ分析、ウェブ開発、オートメーションなど、さまざまな領域で利用されているプログラミング言語です。
初心者から上級者まで幅広いユーザーに支持されている理由はこちら。
- そのシンプルさ
- コードの可読性
- 広範なライブラリとフレームワーク
strftime関数とは
strftime関数とは、日時を指定した形式の文字列に変換するための関数です。
Pythonのdatetimeライブラリに備わっていて、Python環境さえあれば、誰でも使えます。
例えば以下のようなDatetime型を文字列に変換できるのです。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# 指定した形式の文字列に変換
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date) # 出力: 2023-06-07 15:30:00
datetimeライブラリについて詳しく知りたい方はこちらの記事もどうぞ。
strftimeの重要性について
Pythonのstrftime関数は、Pythonプログラマーにとって必須のスキルとなります。
なぜならプログラミングにおいて、日時の扱いは重要な役割を果たすからです。
以下のような多数の場面で、使える関数になります。
- ログのタイムスタンプ
- データのタイムライン分析
- 予定管理
datetimeモジュール:日時を扱う
ここでは、Pythonのdatetimeモジュールについて詳しく解説します。
- 現在の日付と時刻の取得:datetime.now()
- datetimeオブジェクトの生成方法
- dateとtimeオブジェクトへの変換
- dateとtimeオブジェクトからdatetimeオブジェクトを作成
現在の日付と時刻の取得:datetime.now()
Pythonのdatetimeモジュールを使うと、現在の日時を取得できます。
具体的なコードは次の通りです。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
print(now) # 出力:2023-07-08 07:22:30.863694
上記のコードを実行すると、現在の日時が表示されます。
ただしこの時点でのデータ型は「datetime」型です。
print(type(now)) # 出力:<class 'datetime.datetime'>
datetimeオブジェクトの生成方法
datetimeオブジェクトは、以下の要素を持つ日時表現のひとつです。
- 年
- 月
- 日
- 時間
- 分
- 秒
- マイクロ秒
具体的な生成方法は以下のコードに示します。
from datetime import datetime
# datetimeオブジェクトの生成
dt = datetime(2023, 7, 4, 12, 30, 45)
print(dt)
2023年7月4日12時30分45秒を示すdatetimeオブジェクトを作成しています。
dateとtimeオブジェクトへの変換
datetimeオブジェクトからは、dateオブジェクトとtimeオブジェクトへの変換が可能です。
from datetime import datetime
dt = datetime(2023, 7, 4, 12, 30, 45)
# datetimeからdateオブジェクトへ変換
date = dt.date()
# datetimeからtimeオブジェクトへ変換
time = dt.time()
print(date)
print(time)
先程作成したdatetimeオブジェクトから日付情報を持つdateオブジェクトと時間情報を持つtimeオブジェクトを生成しています。
dateとtimeオブジェクトからdatetimeオブジェクトを作成
dateオブジェクトとtimeオブジェクトを組み合わせて、datetimeオブジェクトを生成することも可能です。
from datetime import datetime, time, date
d = date(2023, 7, 4)
t = time(12, 30, 45)
# dateとtimeからdatetimeを生成
dt = datetime.combine(d, t)
print(dt)
以下をcombineメソッドで組み合わせ、新たなdatetimeオブジェクトを作成しています。
- dateオブジェクト:2023年7月4日
- timeオブジェクト:12時30分45秒を
dateモジュール:日付のみを扱う
日付のみを扱いたい場合にはdateモジュールが利用できます。
年、月、日の情報だけを取り扱うため、時間やタイムゾーン等の情報が不要な場合に便利です。
- 現在の日付の取得:date.today()
- dateオブジェクトの生成方法
現在の日付の取得:date.today()
現在の日付を取得する方法について説明します。
Pythonのdateモジュールのtoday()メソッドを用いると、現在の日付を取得することが可能です。
from datetime import date
# 現在の日付を取得
today = date.today()
print(today)
このコードを実行すると、現在の日付を’YYYY-MM-DD’の形式で表示します。
dateオブジェクトの生成方法
特定の日付を表現したい場合にはdateオブジェクトを生成します。
生成方法は以下の通りです。
from datetime import date
# dateオブジェクトの生成
d = date(2023, 7, 4)
print(d)
dateモジュールは日付情報の取得や特定の日付の生成など、日付を扱うための機能を提供しています。
timeモジュール:時間を扱う
時間を扱う場合にはtimeモジュールを用います。
時間、分、秒の情報だけを扱うため、日付やタイムゾーンの情報が不要な場合に便利です。
- 現在時刻の取得
- timeオブジェクトの生成
現在時刻の取得とtimeオブジェクトの生成
現在時刻の取得方法を見ていきましょう。
Pythonのdatetimeモジュールのnow()メソッドを用いてdatetimeオブジェクトを取得した後、timeメソッドを用います。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# 現在時刻の取得
current_time = now.time()
print(current_time)
このコードを実行すると、現在の時間を’HH:MM:SS.ssssss’の形式で表示します。
timeオブジェクトの生成
特定の時間を表現したい場合にはtimeオブジェクトを生成します。
生成方法は以下の通りです。
from datetime import time
# timeオブジェクトの生成
t = time(13, 45, 30) # 13時45分30秒
print(t)
13時45分30秒を表すtimeオブジェクトを作成しています。
timedeltaモジュール:時間間隔を扱う
時間間隔を計算したい場合、timedeltaモジュールが便利です。
特定の日時から何日後、何時間後などを計算するのに使用します。
- datetimeとdateオブジェクトの時間差の計算
- timedeltaオブジェクトの使い方:足し算、引き算
詳しくはこちらでも解説しています。
datetimeとdateオブジェクトの時間差の計算
datetimeオブジェクトやdateオブジェクトの間の時間差を計算する際には、timedeltaオブジェクトを利用します。
以下画素の例です。
from datetime import datetime, timedelta
# 現在の日時を取得
now = datetime.now()
# 5日後の日時を計算
future = now + timedelta(days=5)
print(future)
上記のコードでは、現在の日時に5日後を加算し、その結果を表示しています。
timedeltaオブジェクトの使い方:足し算、引き算
timedeltaオブジェクトは、日、時間、分、秒を表すことができ、それらを足したり引いたりすることが可能です。
以下の例では、10日と3時間と30分を表すtimedeltaオブジェクトを作成し、それらを足し算と引き算で操作しています。
from datetime import timedelta
# timedeltaオブジェクトの生成
delta1 = timedelta(days=10)
delta2 = timedelta(hours=3, minutes=30)
# timedelta同士の足し算
print(delta1 + delta2)
# timedelta同士の引き算
print(delta1 - delta2)
このように、timedeltaは日付や時間の計算を容易にする強力なツールです。
次に、日付と時間をテキストに変換するためのstrftimeについて見ていきましょう。
strftime:日付と時間をテキストに変換
いよいよstrftimeについて見ていきましょう。
これは日付や時間を任意のフォーマットの文字列に変換できる便利な方法です。
- strftimeの基本的な書式コード
- strftimeのサンプルコードとその解説
- strftimeで使える書式コード一覧
strftimeの基本的な書式コード
strftime関数では、指定した書式に従ってdatetimeオブジェクトを文字列に変換します。
[datetime型オブジェクト].strftime(書式コード)
例えば現在時刻の年を「○○年」という形で表示したいときは、以下のようになります。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# 年を「○年」という形で表示
formatted_year = now.strftime("%Y年")
print(formatted_year) # 出力: 2023年
年に相当する書式コードは、「%Y」です。
これらを文字列に埋め込むことで、適切な値が代入され、任意の文字列が作れるのです。
strftimeのサンプルコードとその解説
例えば、現在の日時を「YYYY-MM-DD HH:MM:SS」の形式で表示したい場合、以下のように書けます。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# 日時を「YYYY年MM月DD日HH時MM分SS秒」の形式で表示
formatted_datetime = now.strftime("%Y年%m月%d日%H時%M分%S秒")
print(formatted_datetime) # 出力例: 2023年06月07日15時30分45秒
書式コードを文字列の中に埋め込むだけ。
書式コードをしっかりと頭に入れておきましょう。
strftimeで使える書式コード一覧
Pythonのstrftimeメソッドで使用する書式コードの一覧です。
これらを参考にお好きな日付け文字列を作りましょう。
フォーマットコード | 説明 | 例 |
---|---|---|
%a | 曜日の省略名 | 月 |
%A | 曜日のフルネーム | 月曜日 |
%w | 曜日を数値で (0 = 日曜) | 3 |
%d | 月の日付を2桁の数値で | 07 |
%b | 月の省略名 | 7月 |
%B | 月のフルネーム | 7月 |
%m | 月を2桁の数値で | 07 |
%y | 年の下2桁 | 23 |
%Y | 年を4桁で | 2023 |
%H | 24時間制の時間 (00-23) | 14 |
%I | 12時間制の時間 (01-12) | 02 |
%p | AMまたはPM | 午後 |
%M | 分 (00-59) | 05 |
%S | 秒 (00-59) | 09 |
%f | マイクロ秒 (6桁の数値) | 123456 |
%z | UTCオフセット (±HHMMまたは±HHMMSS形式) | +0900 |
%Z | タイムゾーン名 | JST |
%j | 年の通算日 (001-366) | 188 |
%U | 年の週番号 (日曜を週の始まりとし、00-53) | 28 |
%W | 年の週番号 (月曜を週の始まりとし、00-53) | 27 |
%c | ロケールの適切な日付と時刻の表現 | 2023年 7月 7日 月曜日 14:05:09 |
%x | ロケールの適切な日付の表現 | 2023年 7月 7日 |
%X | ロケールの適切な時刻の表現 | 14:05:09 |
日本語表記にするためには、システムが日本語ロケールでなければなりません。
またこれらは文字列から日付型へ変換できる「strptime」でも使えるものです。
strptime:テキストから日付と時間への変換
datetimeモジュールのもう一つの強力な機能が、テキストから日付や時間の情報を取り出すためのstrptime関数です。
文字列から日付や時間を解析する場合に便利です。
こちらでは簡単にサンプルコードをご覧いただきます。
from datetime import datetime
# 日付情報を含む文字列
date_string = "2023-07-04 12:34:56"
# strptimeを使って文字列からdatetimeオブジェクトを生成
datetime_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(datetime_object)
文字列から日付と時間の情報を読み取り、datetimeオブジェクトを生成。
書式コードを指定することで、対応している値を読み取り、datetime型のオブジェクトが作られるのです。
より高度なstrftimeの応用例
ここでは、より高度なstrftimeの使用例を紹介します。
strftimeは柔軟性があり、さまざまな日時フォーマットを扱えるようになるでしょう。
- 西暦の2桁表示と12時間制表示
- 曜日やタイムゾーンを含む日付フォーマットの作成
西暦の2桁表示と12時間制表示
以下のコードは、西暦の2桁表示と12時間制表示を行います。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# strftimeを使用して西暦を2桁で表示
print(now.strftime("%y"))
# strftimeを使用して時間を12時間制で表示
print(now.strftime("%I:%M %p"))
%yは西暦を2桁で、%Iは時間を12時間制で、%pは午前または午後を表すAMまたはPMを表示します。
曜日やタイムゾーンを含む日付フォーマットの作成
曜日やタイムゾーンを含む日付フォーマットも簡単に作成できます。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# strftimeを使用して曜日とタイムゾーンを含む日付を表示
print(now.strftime("%A, %d %B %Y, %I:%M %p %Z"))
%Aで曜日をフルネームで、%Bで月をフルネームで、%Zでタイムゾーンを表示しています。
strftimeのよくあるエラーとその対策
ここでは、一般的なエラーとその対策について説明します。
strftimeの使用時で、エラーが発生した場合に備えましょう。
- 避けるべき一般的なエラー
- トラブルシューティングガイド
避けるべき一般的なエラー
最もよく遭遇するエラーの一つは、間違った書式指定子を使用することです。
例えば、%Yは4桁の西暦を表しますが、それを%yと誤って記述すると2桁の西暦が表示されます。
また、小文字と大文字は異なる意味を持つため、これらを混同しないように注意することが重要です。
from datetime import datetime
# 間違った書式指定子の使用例
now = datetime.now()
# %Yと誤って%yを使用すると、2桁の西暦が表示される
incorrect_year_format = now.strftime("%y年%m月%d日")
print(incorrect_year_format) # 出力例: 23年06月07日
# 小文字の%hは、12時間制の時刻を表すため、24時間制の%hと混同しないように注意する
incorrect_hour_format = now.strftime("%H時%M分%h秒")
print(incorrect_hour_format) # 出力例: 15時30分%h秒
トラブルシューティングガイド
strftimeのエラーを解決するために、使用している書式指定子が正しいかどうかを確認しましょう。
書式指定子のリストはPythonの公式ドキュメントはもちろん、当記事にもご用意しています。
書式指定子を正しく使用している場合は、オブジェクトが正しい日時データ型であるかを確認してください。
strftimeはdatetime、date、timeオブジェクトに対してのみ機能します。
# エラーとなるコード
from datetime import datetime
now = datetime.now()
print(now.strftime("%m/%d/%y %I:%M %p %Y")) # %Yがエラーの原因
# 正しいコード
from datetime import datetime
now = datetime.now()
print(now.strftime("%m/%d/%Y %I:%M %p")) # %Yを正しく使用
よくある疑問に対する回答
Q: strftimeは何のために使用しますか?
A: strftime関数は、日付や時間のオブジェクトを指定されたフォーマットの文字列に変換するために使用します。
Q: strftimeで24時間制と12時間制をどのように区別しますか?
A: %Hを使用すると24時間制、%Iと%pを使用すると12時間制の時間を表示できます。
Q: datetimeとtimeの違いは何ですか?
A: datetimeオブジェクトは日付と時間の両方を管理しますが、timeオブジェクトは時間のみを管理します。
まとめ
当記事では、Pythonのstrftimeの基本を学びました。
- datetime、date、timeオブジェクトの生成方法
- 各オブジェクトの機能
- strftimeの基本的な使用法
- 複雑なstrftimeの応用例
Pythonのstrftime関数は、日付や時間のデータを様々なフォーマットの文字列に変換するための非常に強力なツール。
日付や時間データを人間が読みやすい形式にするために非常に便利です。
各プロジェクトの要件に合わせてカスタマイズできるため、日付や時間に関するデータの取り扱いを改善するのに役立ちます。
from datetime import datetime
now = datetime.now()
print(now.strftime("%m/%d/%Y %I:%M %p")) # "MM/DD/YYYY HH:MM AM/PM"の形式で表示
これをもとに、日付と時間に関するコーディングがより簡単に、かつ効率的になることを願っています。