この記事は、JavaとPythonを基礎から学びたい私のための Advent Calendar 2024の21日目の記事です。
datetime
datetimeはPythonで日付や時刻を使えるようにするもののようです。
標準ライブラリなのでインストール不要です
import datetime as dt
print(dt.datetime.now())
結果:2024-12-21 04:47:53.656946
現在時刻を取得するには以下のように書くそうです。秒数に関しては、小数点第6位まで出力されています。ただ、現在時刻と9時間ほどのずれがあるようです。調べてみたところ、出力される時間は協定世界時(UTC)のもののようで、ロンドンと同じ時間でした。
そのため、日本の時刻を出すときは
import datetime as dt
UTCtime=dt.datetime.now()
jptime=datetime.time(hour=UTCtime.hour+9,minute=UTCtime.minute,second=UTCtime.second)
print(jptime)
結果:2024-12-21 14:25:45
こんな感じで、UTC+9の時間にしてあげることで日本の時間を出すことが可能でした。ちなみにdatetime.timeと書くことで、任意の時間を設定可能です。
日付のほうが、時間帯によっては1日のずれが生じる可能性があります。
日本の正しい日付を出すためには
import datetime as dt
UTCtime=dt.datetime.now()
if UTCtime.hour>=13:
jpdate=dt.datetime(UTCtime.year,UTCtime.month,UTCtime.day+1,UTCtime.hour+9,UTCtime.minute,UTCtime.second)
else:
jpdate=dt.datetime(UTCtime.year,UTCtime.month,UTCtime.day,UTCtime.hour+9,UTCtime.minute,UTCtime.second)
print(jpdate)
こんな感じにすればちゃんと出るはずです。dt.datetimeを使うことで、任意の日付を出すことが可能でした。
また、曜日に関する処理を行うこともできるようです。例えば今年のクリスマスって何曜日だっけ?とか今からちょうど1年後の曜日を見たいときとかに便利です。
import datetime as dt
christmas=dt.date(2024,12,25)
dow=christmas.weekday()
print(dow)
結果:2
曜日を数字で返してくれるそうです。月曜日を0として、0から6までの数字で返してくれます。今年のクリスマスは、2なので水曜日です。
dt.dateの部分の日付をいじれば動きます。今から1000年後の日付を出したいなら
import datetime as dt
nowdate=dt.date(3024,12,21)
dow=nowdate.weekday()
print(dow)
こんな感じで行けるようです。
曜日名を出したいときは、
nowdate.strftime('%A')
を使うとよいようです。今日(土曜日)の場合、これでSaturdayと出すことができます。
calendar
calendarを使うと、その名の通りカレンダーを出すことができるようです
import calendar
print(calendar.month(2024,12))
結果:
December 2024
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
こんな感じで、calendar.monthの()内に入れた月のカレンダーが出てきます。
先ほど学習したdatetimeを用いると、
import calendar
import datetime as dt
print(calendar.month(dt.date.today().year,dt.date.today().month))
こんな感じでわざわざ月を指定しなくても自動的に今月のカレンダーを出してくれるものを作ることもできます。
ちなみに1年分を出すこともできるみたいです
import calendar
print(calendar.calendar(2024))
まとめ
datetimeを用いることで、日時や曜日を出すことができる。曜日の計算をすることもできる。
また、calendarを使うことで指定した月のカレンダーを表示可能。
参考文献