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オブジェクトから文字列への変換方法、便利な関数の使用方法についても説明しました。

![[Python]Pandasと辞書:データフレームと辞書型データの変換](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/10/1-53.jpg)



