Pythonで日付型・時間型を扱うための「datetime」モジュールを紹介します。
「datetime」モジュールを使用すれば、時刻情報の取得だけでなく、時刻データの計算も簡単にできるようになります。
datetimeモジュールとは?
「datetime」モジュールとは、Python内の標準ライブラリで日付や時刻のデータを簡単に扱うことができます。
また「datetime」モジュールでは四則演算もサポートしています。
datetimeモジュールでは以下のオブジェクトができ、これらを覚えておけば問題ないでしょうか。
オブジェクト名 | 説明 |
---|---|
datetime.datetime | 日付と時刻を扱う |
datetime.date | 日付を扱う |
datetime.time | 時刻を扱う |
datetime.timedelta | 日付・時刻の計算に使用 |
日付・時刻型を扱う:datetimeオブジェクト
現在の日付型と時刻型を同時に扱うには「datetime」オブジェクトを使用することをオススメします。
紛らわしいですが、「datetime」モジュールの「datetime」オブジェクトなので注意してください。
また現在日付・時刻を取得するのは
- 「now()」メソッド
- 「today()」メソッド
を使用します。下の要に使用します。
import datetime
dt_now = datetime.datetime.now()
dt_today = datetime.datetime.today()
下がサンプルになります。
import datetime
if __name__ == '__main__':
dt = datetime.datetime.now()
# datetimeオブジェクト
print(dt)
# 年
print(dt.year)
# 月
print(dt.month)
# 日
print(dt.day)
# 時
print(dt.hour)
# 分
print(dt.minute)
# 秒
print(dt.second)
# マイクロ秒
print(dt.microsecond)
出力結果は以下になります。
2018-07-07 11:33:57.430497
2018
7
7
11
33
57
430497
「datetime」オブジェクトの各属性で年月日と現在時刻も表示することができます。
日付型を扱う:dateオブジェクト
日付型を扱うには「date」オブジェクトを使用することをオススメします。
現在日付を取得するのは「today()」メソッドを使用します。
下がサンプルになります。
import datetime
if __name__ == '__main__':
date_now = datetime.date.today()
print(date_now)
# 年
print(date_now.year)
# 月
print(date_now.month)
# 日
print(date_now.day)
出力結果は以下になります。
2018-07-07
2018
7
7
ちなみに「datetime」オブジェクトもインスタンスメソッドを使用することで、
「date」オブジェクトに変換することができます。
import datetime
if __name__ == '__main__':
dt = datetime.datetime.now()
# date()インスタンスメソッド
print(dt.date())
時刻を扱う:timeオブジェクト
時刻を扱うには「time」オブジェクトを使用出来ます。
現在の時刻は「time」オブジェクトでは取得できませんので注意してください。
下がサンプルになります。
import datetime
if __name__ == '__main__':
time_now = datetime.time(hour=22, minute=30, second=15, microsecond=555)
print(time_now)
# 時
print(time_now.hour)
# 日
print(time_now.minute)
# 分
print(time_now.second)
# マイクロ秒
print(time_now.microsecond)
出力結果は以下になります。
22:30:15.000555
22
30
15
555
ちなみに「datetime」オブジェクトもインスタンスメソッドを使用することで、
「time」オブジェクトに変換することができます。
import datetime
if __name__ == '__main__':
dt_today = datetime.datetime.today()
# time()インスタンスメソッド
print(dt_today.time())
時刻・日付で計算:timedeltaオブジェクト
日付・時刻を計算するに「timedelta」オブジェクトを使用出来ます。
「timedalta」を使用することで、
- ○○日後
- ○○年前
- ○○時間経過
といったような計算を行うことができます。
「timedelta」は以下のように使用します。
import datetime
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
以下指定方法です。すべて整数で指定します。
timedeltaのコンストラクタ | 説明 |
---|---|
days= | 日にちを進める。負の整数で日にちを戻す |
seconds= | 秒数を進める。負の整数で秒数を戻す |
microseconds= | マイクロ秒数を進める。負の整数でマイクロ秒数を戻す |
milliseconds= | ミリ秒数を進める。負の整数でミリ秒数を戻す |
minutes= | 分を進める。負の整数で分を戻す |
hours= | 時間を進める。負の整数で時間を戻す |
weeks= | 週数を進める。負の整数で週数を戻す |
下がサンプルになります。
import datetime
if __name__ == '__main__':
# 7日前と7日後を計算
dt_now = datetime.datetime.now()
before_7days = dt_now + datetime.timedelta(days=-7)
after_7days = dt_now + datetime.timedelta(days=7)
print(dt_now)
print(after_7days)
print(before_7days)
# 2000年からどれだけの何日経過したか計算
dt_2000year = datetime.date(year=2000, month=12, day=31)
print(dt_2000year)
duration = dt_now.date() - dt_2000year
print(duration.days)
出力結果は以下になります。
2018-07-07 13:01:52.313777
2018-07-14 13:01:52.313777
2018-06-30 13:01:52.313777
2000-12-31
6397
Pythonの絵本 Pythonを楽しく学ぶ9つの扉posted with ヨメレバ
株式会社アンク 翔泳社 2018-02-16