日付したい(datetime
)
1from datetime import datetime
2now = datetime.now().astimezone()
3# datetime.datetime(2024, 9, 10, 22, 24, 19, 633527, tzinfo=datetime.timezone(datetime.timedelta(seconds=32400), 'JST'))
4
5print(now)
6# 2024-09-10 22:24:19.633527+09:00
datetime.datetime
はPython標準の日付モジュールです。
デフォルトでは、タイムゾーン情報を含まない(tz-naive
な)日時オブジェクトを取得できます。
Python3.6からastimezone
というメソッドが使えるようになっていて、
タイムゾーン情報を含む(tz-aware
な)日時オブジェクトが簡単に取得できるようになっています。
現在時刻したい(datetime.datetime.now
)
1from datetime import datetime
2now = datetime.now()
3# 2024-09-10 21:48:43.918516
4
5now = datetime.now().astimezone()
6# 2024-09-10 21:48:43.918516+09:00
now
で現在日時を取得できます。
デフォルトはtz-naive
な日時オブジェクトですが、
astimezone
でtz-aware
な日時オブジェクトに変換できます。
日付から文字列にしたい(datetime.datetime.strftime
)
1from datetime import datetime
2now = datetime.now().astimezone()
3now.strftime("%Y-%m-%dT%H:%M:%S.%f%z")
4
5# %Y: 西暦(4桁)
6# %m: 月(2桁; 0埋め)
7# %d: 日(2桁; 0埋め)
8# %H: 時(2桁; 24h)
9# %M: 分(2桁; 0埋め)
10# %S: 秒(2桁; 0埋め)
11# %f: マイクロ秒(6桁; 0埋め)
12# %z: タイムゾーン; UTCオフセット
13# %Z: タイムゾーン名
strftime
で日付オブジェクトを文字列に変換できます。
変換するときに、フォーマットを指定できます。
文字列から日付にしたい(datetime.datetime.strptime
)
1from datetime import datetime
2
3date_string = "2024-09-10 22:18:34"
4datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5# datetime.datetime(2024, 9, 10, 22, 18, 34)
strptime
で、日付の文字列を日付オブジェクトに変換できます。
第一引数に文字列を指定し、
第二引数に読み込む時のフォーマットを指定します。
1from datetime import datetime
2date_string = "2024-09-10T22:18:34"
3datetime.fromisoformat(date_string)
4# datetime.datetime(2024, 9, 10, 22, 18, 34)
日付がISO8601形式の文字列になっている場合は、
fromisoformat
が使えます。
ヒント
strftime
は String Format Time、
strptime
は String Parse Time のことだそうです。
ひと文字違いなので、どっちがどっちだったか、いまいち覚えられずにいましたが、
これからは大丈夫そうです。
UNIX時間を日付にしたい(datetime.datetime.fromtimestamp
)
1import time
2from datetime import datetime
3unix_time = time.time()
4# 1725973811.99409
5
6datetime.fromtimestamp(unix_time)
7# datetime.datetime(2024, 9, 10, 22, 13, 2, 835681)
fromtimestamp
でUNIX時間を日付オブジェクトに変換できます。
UNIX時間はtime
モジュールを使って取得できます。
注釈
datetime.time
モジュールと
time
モジュールは別物です。
その他の操作をしたい
1from datetime import datetime # datetime.datetimeオブジェクト
2from datetime import date # datetime.dateオブジェクト
3from datetime import time # datetime.timeオブジェクト
4from datetime import timezone # datetime.timezoneオブジェクト
5from datetime import tzinfo
6from datetime import timedelta # datatime.timedeltaオブジェクト
datetime
モジュールの中にはいろいろなサブモジュールがはいっています。
import datetime
ですべてをインポートしてもよいですが、
自分が必要なモジュールを選んでおくと、コードが読みやすくなります。