こんにちは!Masaです。
今回はPythonにおける日付の扱い方について解説していきます。
- Pythonの日付の扱い方
- Pythonの日付の型の種類
Pythonの日付の型の種類は?
Pythonに限らず日付や時間を扱う場面って多いですよね。
ということで、今回はPythonの日付や時間を調べて解説していきます。
基本的にPythonで使用する日付のモジュールは”datetime”です。
”datetime”モジュールは日付や時刻を操作するためのクラスを定義しています。
datetimeモジュールで主に使用されるオブジェクトとして
- 日付表現のdateオブジェクト
- 時間表現のtimeオブジェクト
- 日付と時間表現のdatetimeオブジェクト
の3種類があります。
” datetime”の使い方や概念を見ていきましょう!
NaiveとAwareの扱いについて
datetimeモジュールで扱う日時にはタイムゾーンを含んでいるものと含んでいないものがあります。
具体的には以下のようになります。
- naive : タイムゾーンを含んでいない
- aware : タイムゾーンを含んでいる
niaveはタイムゾーンなどを考慮しなくてよいため扱いが簡単になります。
naiveとawareの扱い方については以下の記事を参照ください。
日付・時刻のフォーマット
datetimeオブジェクト等で取得した日時を文字列に変換するには”strftime関数”を使います。
出力時にどの部分を表示するかのフォーマット指定ができ、以下の指定方法で指定します。
※2022年9月21日13時25分30秒(水)を例に出力例を表示します
表示 | 指定文字 | 出力例 |
---|---|---|
年(4桁表示) | %Y | 2022 |
年(下2桁表示) | %y | 22 |
月(2桁表示) | %m | 09 |
月(英語省略表示) | %b | Sep |
月(英語表示) | %B | September |
日(一般的な日) | %d | 21 |
日(1月1日からの経過日数) | %j | 264 |
曜日(英語表示) | %A | Wednesday |
曜日(英語省略表示) | %a | wed |
時(24時間表示) | %H | 13 |
時(12時間表示) | %I | 1 |
分 | %M | 25 |
秒 | %S | 30 |
AM or PM | %p | PM |
また、文字列を日付や時間に戻す関数としてstrptime関数があります。
日時の取得・表示
実際の日時の取得や表示を行ってみましょう
任意の日時を指定する
任意の日時を表示させたい場合は以下のようにします。
import datetime
# datetime(year, month, day, hour, min, sec)
dt = datetime.datetime(2020, 5, 29, 13, 30, 58)
print(dt)
--出力--
2020-05-29 13:30:58
仮にsecを指定しなかった場合、sec部分は00秒となります。
現在の日時を取得・表示する
現在の日時を表示するにはいくつかの方法があります。
今回は、①現在の日時、②現在の日付、③現在の時刻を出力する3パターンを紹介します。
import datetime
# 現在の日時
now_datetime = datetime.datetime.today()
print(now_datetime)
# 出力
# 2022-09-21 14:25:57.198287
# 現在の年月日
now_date = now_datetime.date()
print(now_date)
# 出力
# 2022-09-21
# 現在の時刻
now_time = now_datetime.time()
print(now_time)
# 出力
# 14:31:15.787316
文字列を変換
日時を取得しても標準の形で出力すると見にくいですよね。
見やすいように日付を指定の文字列に変換する関数が”strftime関数”です。
使い方を見ていきましょう。
import datetime
# datetime(year, month, day, hour, min, sec)
dt = datetime.datetime(2020, 5, 29, 13, 30, 58)
print(dt)
# 出力
# 2020-05-29 13:30:58
# 〇〇〇〇年〇月〇日
print(dt.strftime('%Y年%m月%d日'))
# 出力
# 2020年05月29日
# 〇〇時〇〇分〇〇秒
print(dt.strftime('%H時%M分%S秒'))
# 出力
# 13時30分58秒
上記は基本的な使い方で、曜日やAM/PM表示なども行えます。
上記の日付・時刻のフォーマットを参考にして文字列を作成してください。
時間差の算出
2つの日時の差を知りたい場面もありますよね。
(例えば自分の誕生日が現在までの差など)
基本的な使い方は以下のような形です。
import datetime
# datetime(year, month, day, hour, min, sec)
dt1 = datetime.datetime(2020, 5, 29, 13, 30, 00)
dt2 = datetime.datetime(2020, 6, 29, 14, 0, 0)
dt_diff = dt2 - dt1
print(dt_diff)
# 出力
# 31 days, 0:30:00
特に難しいことはなく、2つのdatetimeを引き算することで算出できます。
もし日付だけ算出したければ以下のようにしてください
print(dt_diff.days)
# 出力
# 31
まとめ
今回はPythonにて日付・時刻を扱う”datetime”について解説しました。
”datetime”モジュールには主に3つのオブジェクトがあります。
- 日付表現のdateオブジェクト
- 時間表現のtimeオブジェクト
- 日付と時間表現のdatetimeオブジェクト
これらをうまく活用し、日時を扱っていけるといいですね。
タイムゾーンを考えたりするともう少し複雑になるので、別記事で解説したいと思います。
コメント