9.1 日付と時間の操作
プログラマーはプログラムで日付や時間を扱うことがよくあるよね。だからPythonにはこのための標準ライブラリとしてdatetime
とtime
があるんだよ。
datetime
ライブラリはPythonの標準ライブラリの一部で、日付や時間を扱うためのクラスを提供してるんだ。日付や時間を作成したり、操作したり、フォーマットしたり、またそれらに対して算術演算を実行することができるよ。
datetime
ライブラリの主なクラス
クラス datetime.date
このクラスは日付(年、月、日)を時間なしで表すんだ。カレンダーの日付を扱うのに便利だよ。
使い方の例:
import datetime
# 日付オブジェクトの作成
d = datetime.date(2023, 5, 24)
print(d) # 出力: 2023-05-24
# 現在の日付を取得
today = datetime.date.today()
print(today)
# 年、月、日の属性アクセス
print(d.year) # 出力: 2023
print(d.month) # 出力: 5
print(d.day) # 出力: 24
クラス datetime.time
このクラスは時間(時、分、秒、マイクロ秒)を日付なしで表すんだ。1日の時間を扱うのに便利だよ。
使い方の例:
import datetime
# 時間オブジェクトの作成
t = datetime.time(14, 30, 45)
print(t) # 出力: 14:30:45
# 時、分、秒の属性アクセス
print(t.hour) # 出力: 14
print(t.minute) # 出力: 30
print(t.second) # 出力: 45
クラス datetime.datetime
このクラスは日付と時間(年、月、日、時、分、秒、マイクロ秒)を組み合わせて表すんだ。具体的な時刻を扱うのに便利だよ。
使い方の例:
import datetime
# 日付と時間のオブジェクト作成
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt) # 出力: 2023-05-24 14:30:45
# 現在の日付と時間を取得
now = datetime.datetime.now()
print(now)
# 日付と時間の属性アクセス
print(dt.year) # 出力: 2023
print(dt.month) # 出力: 5
print(dt.day) # 出力: 24
print(dt.hour) # 出力: 14
print(dt.minute) # 出力: 30
print(dt.second) # 出力: 45
クラス datetime.timedelta
このクラスは2つの時刻の差を日、秒、マイクロ秒で表すんだ。日付と時間の算術演算を行うのに便利だよ。
使い方の例:
import datetime
# timedeltaオブジェクトの作成
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta) # 出力: 10 days, 5:30:00
# 日付にtimedeltaを追加
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt) # 出力: 2023-06-03 20:00:00
# 日付からtimedeltaを引く
earlier_dt = dt - delta
print(earlier_dt) # 出力: 2023-05-14 09:00:00
4.2 日付と時間のフォーマットとパース
日付を単に扱うだけでなく、特定の形式の文字列に変換することがよく必要になるよね。逆に、文字列をオブジェクトに変換するプロセスは通常パースと呼ばれてる。そのためのクラスとメソッドがPythonにはあるんだ:
メソッド strftime()
strftime()
メソッドはdatetime
オブジェクトを指定された形式の文字列にフォーマットするために使われるよ。
使い方の例:
import datetime
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
# 日付と時間のフォーマット
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt) # 出力: 2023-05-24 14:30:45
# 日付のみのフォーマット
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date) # 出力: 24-05-2023
# 時間のみのフォーマット
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time) # 出力: 14:30:45
メソッド strptime()
strptime()
メソッドは指定された形式で文字列をdatetime
オブジェクトにパースするために使われるよ。
使い方の例:
import datetime
# 文字列をdatetimeオブジェクトにパース
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt) # 出力: 2023-05-24 14:30:45
# 文字列をdateオブジェクトにパース
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d) # 出力: 2023-05-24
# 文字列をtimeオブジェクトにパース
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t) # 出力: 14:30:45
4.3 タイムゾーンの操作
実践的に言うと、世界中の人たちが僕たちのサービスを使ってくれていて、残念ながら彼らは異なる国に住んでいて異なるタイムゾーン (timezone
)を持っているんだ。だからプログラマーとしてそれも扱えるようにしないといけないね。
もちろんPythonにはこのためのクラスもあるよ:
クラス timezone
モジュールdatetime
のtimezone
クラスはタイムゾーンを扱うことができるよ。
import datetime
# UTCタイムゾーン付きのdatetimeオブジェクト作成
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt) # 出力: 2023-05-24 14:30:45+00:00
# 別のタイムゾーンへの変換
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt) # 出力: 2023-05-24 23:30:45+09:00
今回はdatetime
ライブラリについて非常に簡単に触れただけだよ、ほんとに表面的な感じでね。将来的にはもっと詳細なタスクを扱うためにまた戻ってくる予定だよ。今回はとにかくライブラリについて知ってもらって、標準ライブラリのセットについて視野を広げてもらおうと思ったんだ。
どんなライブラリでも、まずはそれが存在することを知って、その助けで何ができるのかを把握しておくことが重要だよ。機能のリストやそのパラメーター、すべての可能性については公式ドキュメントからいつでも調べることができるんだからさ。
GO TO FULL VERSION