Pythonは時刻を扱うための豊富なライブラリがあります。本記事では、Pythonでの文字列と時刻の扱い方、時間の表現方法と基本操作、文字列から時刻への変換方法、時刻から文字列への変換方法、時刻操作の便利な関数とその使い方、そして実際のコード例を通じて理解を深めます。
Pythonでの時刻の扱い方
Pythonで時刻を扱うためには、標準ライブラリのdatetime
モジュールを利用します。このモジュールは、日付と時刻を扱うためのクラスを提供しています。
import datetime # 現在の時刻を取得 now = datetime.datetime.now() # 年、月、日、時、分、秒をそれぞれ取得 year = now.year month = now.month day = now.day hour = now.hour minute = now.minute second = now.second print(year, month, day, hour, minute, second) # 出力:2022 2 1 15 30 0
Pythonでの時間の表現方法と基本操作
Pythonで時刻を表現するには、datetime.datetime
クラスを使用します。このクラスは、年、月、日、時、分、秒、マイクロ秒の情報を保持します。
時刻の基本操作には、加算、減算、比較があります。加算、減算は単位として、日、時間、分、秒、マイクロ秒を指定することができます。比較には、等しいかどうか、大きいかどうか、小さいかどうかを判定する演算子があります。
import datetime # 2022年2月1日15時30分を表すdatetimeオブジェクトを作成 dt = datetime.datetime(2022, 2, 1, 15, 30) # 1日後を計算 dt2 = dt + datetime.timedelta(days=1) # 1時間後を計算 dt3 = dt + datetime.timedelta(hours=1) # 30分前を計算 dt4 = dt - datetime.timedelta(minutes=30) # 比較 if dt2 > dt: print("dt2 is greater than dt") # 出力:dt2 is greater than dt # 等しいかどうかの判定 if dt == datetime.datetime(2022, 2, 1, 15, 30): print("dt is equal to 2022/2/1 15:30") # 出力:dt is equal to 2022/2/1 15:30
文字列から時刻への変換方法
Pythonで文字列から時刻を扱うには、datetime.datetime.strptime()
関数を使用します。この関数は、文字列を指定したフォーマットに従って解析し、datetimeオブジェクトを作成します。
フォーマットは、日付と時刻を表す記号を指定することで、解析対象の文字列に合わせたフォーマットを作成することができます。
import datetime # 文字列をdatetimeオブジェクトに変換 dt_str = "2022-02-01 15:30:00" dt = datetime.datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S") # 年、月、日、時、分、秒をそれぞれ取得 year = dt.year month = dt.month day = dt.day hour = dt.hour minute = dt.minute second = dt.second print(year, month, day, hour, minute, second) # 出力:2022 2 1 15 30 0
時刻から文字列への変換方法
Pythonでdatetimeオブジェクトを文字列に変換するには、datetime.datetime.strftime()
関数を使用します。この関数は、datetimeオブジェクトを指定したフォーマットに従って文字列に変換します。
フォーマットは、文字列として出力する日付と時刻を表す記号を指定することで、datetimeオブジェクトに合わせたフォーマットを作成することができます。
import datetime # datetimeオブジェクトを文字列に変換 dt = datetime.datetime(2022, 2, 1, 15, 30) dt_str = dt.strftime("%Y-%m-%d %H:%M:%S") print(dt_str) # 出力:2022-02-01 15:30:00
Pythonでの時刻操作の便利な関数とその使い方
Pythonのdatetime
モジュールには、時刻操作に便利な関数がいくつか用意されています。ここでは、その中でも代表的なものを紹介します。
timedelta()
timedelta()
は、日、時間、分、秒、マイクロ秒を単位とする、時刻の差分を表現するためのクラスです。前述の例でも使用しました。
import datetime # 2022年2月1日15時30分を表すdatetimeオブジェクトを作成 dt = datetime.datetime(2022, 2, 1, 15, 30) # 1日後を計算 dt2 = dt + datetime.timedelta(days=1) # 1時間後を計算 dt3 = dt + datetime.timedelta(hours=1) # 30分前を計算 dt4 = dt - datetime.timedelta(minutes=30)
replace()
replace()
は、datetimeオブジェクトの年、月、日、時、分、秒、マイクロ秒のうち、指定した値を置き換えた新しいdatetimeオブジェクトを作成します。
import datetime # 2022年2月1日15時30分を表すdatetimeオブジェクトを作成 dt = datetime.datetime(2022, 2, 1, 15, 30) # 月を12月に変更 dt2 = dt.replace(month=12) # 日を1日に変更 dt3 = dt.replace(day=1)
weekday()
weekday()
は、datetimeオブジェクトの曜日を表す整数を返します。月曜日が0、日曜日が6に対応します。
import datetime # 2022年2月1日15時30分を表すdatetimeオブジェクトを作成 dt = datetime.datetime(2022, 2, 1, 15, 30) # 曜日を取得 weekday = dt.weekday() if weekday == 0: print("Monday") # 出力:Monday
実際のコード例を通じた理解の深化
ここでは、文字列として入力された日付と時間の情報をdatetimeオブジェクトに変換するプログラムを紹介します。入力される文字列は、”YYYY/MM/DD HH:MM:SS”の形式とします。
import datetime # ユーザーからの入力を受け取る input_str = input("Enter date and time in the format of YYYY/MM/DD HH:MM:SS: ") # 入力された文字列をdatetimeオブジェクトに変換 dt = datetime.datetime.strptime(input_str, "%Y/%m/%d %H:%M:%S") # datetimeオブジェクトを文字列に変換 dt_str = dt.strftime("%Y/%m/%d %H:%M:%S") print("Input: ", input_str) # 出力:Input: 2022/02/01 15:30:00 print("Datetime object: ", dt) # 出力:Datetime object: 2022-02-01 15:30:00 print("Datetime string: ", dt_str) # 出力:Datetime string: 2022/02/01 15:30:00
まとめ
Pythonで文字列から時刻を扱う方法を紹介しました。datetimeモジュールを使用することで、日付と時刻を扱うことができます。また、文字列からdatetimeオブジェクトへの変換方法や、datetimeオブジェクトから文字列への変換方法、便利な関数の使用方法についても説明しました。