日付したい(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な日時オブジェクトですが、 astimezonetz-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ですべてをインポートしてもよいですが、 自分が必要なモジュールを選んでおくと、コードが読みやすくなります。

リファレンス