Pythonのdatetimeの使い方: 現在時刻を得る、文字列を時刻に変換する
- 作成日: 2020-10-29
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonのdatetimeの使い方
Pythonには基本的な日付や時刻を扱うためのモジュール「datetime
」があります。
このモジュールを使うことで現在時刻の取得や、文字列のdatetime
オブジェクトへの変換などを行うことが出来ます。
現在時刻の取得
datetime
モジュールを使って現在時刻を取得するには、まずdatetime
モジュール内のdatetime
モジュールをインポートします。
そのdatetime
モジュールのnow
関数を呼び出すことで現在のローカルな日時を得ることが可能です。
↓のようにして現在時刻を取得して出力します。
from datetime import datetime
now = datetime.now()
print(now)
出力結果。
2020-09-30 17:06:31.810916
datetime.now()の返り値
datetime.now()
の返り値の型は<class 'datetime.datetime'>
です。
よってhour
やminute
などの属性にアクセス可能です。
from datetime import datetime
now = datetime.now()
print('year', now.year)
print('month', now.month)
print('day', now.day)
print('hour', now.hour)
print('minute', now.minute)
print('second', now.second)
出力結果。
year 2020
month 9
day 30
hour 17
minute 41
second 45
タイムゾーンの指定
datetime.now()
の第1引数にはタイムゾーンを指定することが出来ます。
タイムゾーンはdatetime
モジュールのtimezone
クラスとtimedelta
クラスで生成します。
timedelta
クラスで時刻の差分を生成し、timezone
クラスに渡します。
from datetime import datetime, timedelta, timezone
jst_tz = timezone(timedelta(hours=9), 'JST')
print(datetime.now(jst_tz))
print(datetime.now())
出力結果。
2020-09-30 17:17:54.686803+09:00
2020-09-30 17:17:54.686803
↑の1つ目の出力はタイムゾーンが有効になっているため+09:00
が付加されています。
文字列を時刻に相互変換する
datetime
モジュールには文字列から時刻を生成する&またはその逆の手段がいくつか用意されています。
代表的なのがstrftime()
とstrptime()
を使った方法です。
これらの一番の違いは、strftime()
はオブジェクトと指定された文字列で文字列を生成するのに対して、strptime()
は純粋な文字列からオブジェクトを生成する点です。
strftime()でオブジェクトから文字列を生成
strftime()
でdatetime
オブジェクトから文字列を生成するには↓のようにします。
from datetime import datetime
now = datetime.now()
s = now.strftime('%Y-%m-%d')
print(type(s))
print(s)
出力結果。
<class 'str'>
2020-09-30
strptime()で文字列をオブジェクトに変換
文字列を解析させてdatetime
オブジェクトを生成したい場合はstrptime()
を使います。
strptime()
の第1引数に時刻を表す文字列、第2引数に第1引数のフォーマットを渡します。
第2引数のフォーマットというのは「このフォーマットで第1引数を解析せよ」という開発者からstrptime()
に送る助け船です。
strptime()
はこの助け船の力を借りて文字列をパースします。
from datetime import datetime
s = '2020-01-01 01:23:45'
d = datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(type(d))
print(d)
問題
Q1: 現在時刻を取得したい時に適当な関数を答えよ
- now
- timezone
- timedelta
Q2: 文字列をdatetime
オブジェクトに変換したいとき適した関数を答えよ
- timezone
- strptime
- strftime
Q3: datetime
オブジェクトから時刻を文字列として抽出したい時に適した関数を答えよ
- strftime
- strptime
- now
問題の正解はこちら↓。
Q1: 1
Q2: 2
Q3: 1