Python

Pythonでの現在時刻の取得や日時の比較を行う

Python

Pythonで現在時刻の取得や日時の比較を行う方法についての自分用のメモになります。

datetimeモジュールで現在時刻の取得

まず、Pythonで日時を扱う際にはdatetimeモジュールを使います。

注意となりますが、「import datetime」で読み込んだ際には「datetime.dateime.now()」というような形で2回datetimeを繰り返す必要があります。

import datetime

# 現在時刻を取得
now_datetime = datetime.datetime.now()
print(now_datetime)

// 結果
2021-01-31 19:34:56.444983

私は通常は以下の様にdatetimeモジュールの中から利用するものだけ使ってます。そうするとdatetimeは2回繰り返す必要はありません。

from datetime import datetime, timedelta, timezone

# 現在の時刻(型:datetime)
now_datetime = datetime.now()
print(now_datetime)

// 結果
2021-01-31 19:34:56.444983

フォーマットして表示する+ datetime型からString型に変換する

以下の方法でdatetime型からString型に変更しつつ、フォーマットを整えることができます。

「strftime」でフォーマットを指定してあげます。

from datetime import datetime, timedelta, timezone

# Format and change type datetime to string
format_now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(format_now_str)

// 結果
2021-01-31 19:34:56

String型からdatetime型に変換する

次は文字列(string)で指定した日付をdatetime型に変更します。datetimeに変換することで比較などができるようになります。

型を変換するには、「strptime」をつかいます。

from datetime import datetime, timedelta, timezone

# change type string to datetime
string_datetime = "2021-02-15 20:15:30"
datetime_datetime = datetime.strptime(string_datetime, '%Y-%m-%d %H:%M:%S')
print(datetime_datetime)

//結果
2021-02-15 20:15:30

日時の比較

比較対象がどちらもdatetime型であれば日時の比較をすることができます。

from datetime import datetime, timedelta, timezone

# 現在の時刻(型:datetime)
now_datetime = datetime.now()
print(now_datetime)

# String to Datetime
string_datetime = "2021-02-15 20:15:30"
datetime_datetime = datetime.strptime(string_datetime, '%Y-%m-%d %H:%M:%S')
print(datetime_datetime)

if now_datetime > datetime_datetime:
    print("現在日時の方が未来の時間です[now_datetime > datetime_datetime]")
else:
    print("指定した日時の方が未来の時間です[now_datetime < datetime_datetime]")


//結果
2021-01-31 19:34:56.444983
2021-02-15 20:15:30
指定した日時の方が未来の時間です[now_datetime < datetime_datetime]

日時の差分を計算する

最後に日付の差分を取得します。datetime型同士なので通常の式で計算ができます。

日数だけ取得したかったので「days」で日数だけ取得することができます。

from datetime import datetime, timedelta, timezone

# 現在の時刻(型:datetime)
now_datetime = datetime.now()
print(now_datetime) // 2021-01-31 21:37:56.451245

# String to Datetime
string_datetime = "2021-02-15 20:15:30"
datetime_datetime = datetime.strptime(string_datetime, '%Y-%m-%d %H:%M:%S')
print(datetime_datetime) // 2021-02-15 20:15:30 

# 日時の差分
diff = datetime_datetime - now_datetime
print(diff) // 14 days, 22:37:33.548755

# 差分の日数
print(diff.days) // 14
 
// 結果
2021-01-31 21:37:56.451245
2021-02-15 20:15:30
14 days, 22:37:33.548755
14

まとめ

Python以外のプログラム言語でも時刻についての取得や計算についての大体異なるので迷ってしまいます。

今回は以上となります。

コメント