Pythonで文字列から時刻を操作する !便利な関数と使い方を解説

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