【Python】日時変換のアレコレ

アプリ開発

Python の日時変換が覚えられず、毎回ググっていたのでまとめました。

スポンサーリンク

タイムゾーンの指定

from datetime import datetime
from dateutil.tz import tzlocal

now: datetime = datetime.now(tz=tzlocal())
print(now)
# 結果: 2022-01-09 17:22:04.652831+09:00

datetime型を文字列型に変換

from datetime import datetime
from dateutil.tz import tzlocal

now: datetime = datetime.now(tz=tzlocal())
print(now)
# 結果: 2022-01-09 17:22:04.652831+09:00

str_datetime: str = now.strftime('%Y-%m-%d')
print(str_datetime)
# 結果: '2022-01-09'

str_datetime: str = now.strftime('%Y-%m-%d %H:%M:%S')
print(str_datetime)
# 結果: '2022-01-09 17:22:04'

文字列型をdatetime型に変換

from datetime import datetime
from dateutil.tz import tzlocal
import calendar

now: datetime = datetime.now(tz=tzlocal())
print(now)
# 結果: 2022-01-09 17:22:04.652831+09:00

str_datetime: str = now.strftime('%Y-%m-%d %H:%M:%S')
print(str_datetime)
# 結果: '2022-01-09 17:22:04'

dt: datetime = datetime.strptime(str_datetime, '%Y-%m-%d %H:%M:%S')
print(dt)
# 結果: 2022-01-09 17:22:04

この場合、タイムゾーンが設定されない。

datetime型をタイムスタンプ(int型)に変換

秒までのタイムスタンプ

from datetime import datetime
from dateutil.tz import tzlocal
import calendar

now: datetime = datetime.now(tz=tzlocal())
print(now)
# 結果: 2022-01-09 17:22:04.652831+09:00

timestamp: int = calendar.timegm(now.utctimetuple())
print(timestamp)
# 結果: 1641716524

Webサービス を使うと、簡単にタイムスタンプを日時に変換できる。

ミリ秒までのタイムスタンプ

10桁のタイムスタンプは秒までしか持っていないので、ミリ秒のタイムスタンプが欲しい場合は 1000倍するとよい。

from datetime import datetime
from dateutil.tz import tzlocal
import calendar

now: datetime = datetime.now(tz=tzlocal())
print(now)
# 結果: 2022-01-09 17:22:04.652831+09:00

timestamp: int = calendar.timegm(now.utctimetuple())*1000
print(timestamp)
# 結果: 1641716524000

タイムスタンプ(int型)をdatetime型に変換

秒までのタイムスタンプ

from datetime import datetime
from dateutil.tz import tzlocal
import calendar

now: datetime = datetime.now(tz=tzlocal())
print(now)
# 結果: 2022-01-09 17:22:04.652831+09:00

timestamp: int = calendar.timegm(now.utctimetuple())
print(timestamp)
# 結果: 1641716524

dt: datetime = datetime.fromtimestamp(timestamp)
print(dt)
# 結果: 2022-01-09 17:22:04

ミリ秒までのタイムスタンプ

ミリ秒のタイムスタンプの場合は、0.001倍してから変換する。

from datetime import datetime
from dateutil.tz import tzlocal
import calendar

now: datetime = datetime.now(tz=tzlocal())
print(now)
# 結果: 2022-01-09 17:22:04.652831+09:00

timestamp: int = calendar.timegm(now.utctimetuple())*1000
print(timestamp)
# 結果: 1641716524000

dt: datetime = datetime.fromtimestamp(timestamp*0.001)
print(dt)
# 結果: 2022-01-09 17:22:04

おわりに

とりあえず思いついただけ記載しました。

足りなければ追記します。

タイトルとURLをコピーしました