Pythonで日付や時間の処理を行うには、標準ライブラリのdatetimeモジュールを使用します。このモジュールには、日付や時間を扱うためのクラスや、日付・時間の計算、フォーマット変換を行うためのメソッドが定義されています。datetimeモジュールはPythonに標準で組み込まれているため、追加のインストールは不要です。
- datetimeモジュールのインポート
- 現在の日時を取得する
- 日時を指定してdatetimeオブジェクトを作成する
- 日付や時間のフォーマットを変換する
- 文字列からdatetimeオブジェクトを作成する
- timedeltaオブジェクトによる日付・時間の計算
- まとめ
datetimeモジュールのインポート
datetimeモジュールを使用するには、まず以下のようにインポートします。
import datetime
現在の日時を取得する
現在の日時を取得するには、datetime.now()を使用します。
import datetime now = datetime.datetime.now() print(now)
datetime.datetime.now()は、現在の日時を表すdatetimeオブジェクトを返します。このオブジェクトには、年、月、日、時、分、秒、マイクロ秒の情報が含まれています。
実行結果は次のようになります。(マイクロ秒は実行環境によって異なります)
2024-05-08 10:30:15.123456
日時を指定してdatetimeオブジェクトを作成する
特定の日時を表すdatetimeオブジェクトを作成するには、datetimeクラスのコンストラクタに年、月、日、時、分、秒などの引数を渡します。
import datetime date = datetime.datetime(2023, 4, 15, 14, 30, 0) print(date)
実行結果:
2023-04-15 14:30:00
年月日のみを指定し、時分秒を省略した場合は、00:00:00として扱われます。
日付や時間のフォーマットを変換する
datetimeオブジェクトを特定の書式で文字列に変換するには、strftime()メソッドを使用します。strftime()メソッドには、フォーマット指定子を含む文字列を渡します。
主なフォーマット指定子は以下のとおりです。
| 指定子 | 説明 | 例 |
|---|---|---|
%Y |
西暦(4桁) | 2023 |
%m |
月(0埋め2桁) | 04 |
%d |
日(0埋め2桁) | 15 |
%H |
時(24時間表記、0埋め2桁) | 14 |
%M |
分(0埋め2桁) | 30 |
%S |
秒(0埋め2桁) | 00 |
%f |
マイクロ秒(6桁) | 123456 |
%a |
曜日(短縮形) | Sat |
%A |
曜日(完全形) | Saturday |
%b |
月名(短縮形) | Apr |
%B |
月名(完全形) | April |
%y |
西暦(下2桁) | 23 |
strftime()を使って、datetimeオブジェクトを様々なフォーマットの文字列に変換する例を示します。
以下の例の、datetime.datetime.now()は現在時刻を取得します。
import datetime now = datetime.datetime.now() # 例1:YYYY年MM月DD日 HH時MM分SS秒 formatted1 = now.strftime("%Y年%m月%d日 %H時%M分%S秒") print(formatted1) # 例2:YYYY/MM/DD (曜日) formatted2 = now.strftime("%Y/%m/%d (%A)") print(formatted2) # 例3:YY/MM/DD formatted3 = now.strftime("%y/%m/%d") print(formatted3) # 例4: HH:MM:SS.ffffff formatted4 = now.strftime("%H:%M:%S.%f") print(formatted4)
実行結果(例):
2024年05月08日 10時48分37秒 2024/05/08 (Wednesday) 24/05/08 10:48:37.446251
文字列からdatetimeオブジェクトを作成する
strptime()メソッドを使うと、特定の書式で記述された日付や時刻の文字列から、datetimeオブジェクトを作成できます。strptime()メソッドは、第1引数に日付や時刻を表す文字列、第2引数にその文字列のフォーマットを指定します。strptime()メソッドは、strftime()メソッドと逆の処理を行うと考えるとわかりやすいです。
import datetime date_string = "2023-04-15 14:30:00" format_string = "%Y-%m-%d %H:%M:%S" date_object = datetime.datetime.strptime(date_string, format_string) print(date_object)
実行結果:
2023-04-15 14:30:00
timedeltaオブジェクトによる日付・時間の計算
datetimeモジュールには、時間差を表すtimedeltaオブジェクトもあります。timedeltaオブジェクトを使用すると、2つの日付や時間の差を計算したり、特定の日時から一定時間後(または前)の日時を求めたりできます。
timedeltaオブジェクトは、days, seconds, microsecondsなどの属性を持ち、それぞれ日単位、秒単位、マイクロ秒単位での時間差にアクセスできます。
import datetime # 1週間後の日付を取得する now = datetime.datetime.now() one_week_later = now + datetime.timedelta(weeks=1) print(one_week_later) # 10日前の日付を取得する ten_days_ago = now - datetime.timedelta(days=10) print(ten_days_ago) # 2つの日付の差を計算する date1 = datetime.datetime(2023, 4, 1) date2 = datetime.datetime(2023, 4, 15) difference = date2 - date1 print(difference) print(difference.days) # 日数のみを取得 print(difference.total_seconds()) # 秒数で取得
実行結果(例):
2024-05-15 10:51:34.521795 2024-04-28 10:51:34.521795 14 days, 0:00:00 14 1209600.0
まとめ
Pythonのdatetimeモジュールは、日付や時間の取得、フォーマット変換、計算などを行うための機能を提供します。時系列データの処理などでは、日付や時間を扱う処理を実装する処理は多く、datetimeモジュールを使いこなすことが重要です。
[PR]