【Python】時・分・秒を相互に変換する方法

この記事では、Pythonの標準ライブラリを使って時間を操作する方法をわかりやすく解説します。

datetimeモジュールとtimeモジュールの基本的な使い方から、秒、分、時間の単位変換、さらには実用的なタイマーの作成や時間のフォーマット変換まで、初心者でも理解できるようにサンプルコードと一緒に説明します。

目次から探す

Pythonでの時間の取り扱い

Pythonでは、時間を扱うための便利な標準ライブラリがいくつか用意されています。

これらのライブラリを使うことで、時間の計算やフォーマット変換などを簡単に行うことができます。

この記事では、特にdatetimeモジュールとtimeモジュールに焦点を当てて解説します。

標準ライブラリの紹介

Pythonには、時間を扱うための標準ライブラリとして主にdatetimeモジュールとtimeモジュールがあります。

これらのモジュールを使うことで、時間の計算やフォーマット変換、タイマーの作成などが簡単に行えます。

datetimeモジュール

datetimeモジュールは、日付と時間を扱うための強力なツールです。

このモジュールを使うことで、日付や時間の計算、フォーマット変換、タイムゾーンの操作などが可能です。

以下に、datetimeモジュールの基本的な使い方を紹介します。

timeモジュール

timeモジュールは、主にUNIXタイムスタンプ(エポック秒)を扱うためのモジュールです。

このモジュールを使うことで、現在の時刻の取得や、時間のスリープ(待機)などが簡単に行えます。

以下に、timeモジュールの基本的な使い方を紹介します。

基本的な使い方

まずは、datetimeモジュールとtimeモジュールをインポートする方法を見てみましょう。

import datetime
import time

これで、これらのモジュールを使う準備が整いました。

次に、具体的な使い方を見ていきましょう。

datetimeオブジェクトの生成

datetimeモジュールを使って、現在の日時を取得する方法を見てみましょう。

import datetime
# 現在の日時を取得
now = datetime.datetime.now()
print(now)

このコードを実行すると、現在の日時が表示されます。

例えば、2023-10-01 12:34:56.789012のような形式で出力されます。

また、特定の日時を指定してdatetimeオブジェクトを生成することもできます。

import datetime
# 特定の日時を指定して生成
specific_date = datetime.datetime(2023, 10, 1, 12, 34, 56)
print(specific_date)

このコードを実行すると、指定した日時が表示されます。

timeオブジェクトの生成

timeモジュールを使って、現在の時刻を取得する方法を見てみましょう。

import time
# 現在の時刻を取得
current_time = time.time()
print(current_time)

このコードを実行すると、現在のUNIXタイムスタンプが表示されます。

例えば、1633071296.789012のような形式で出力されます。

また、timeモジュールを使って、特定の時間だけスリープ(待機)することもできます。

import time
# 5秒間スリープ
time.sleep(5)
print("5秒経過しました")

このコードを実行すると、5秒間待機した後に「5秒経過しました」と表示されます。

以上が、Pythonでの時間の取り扱いに関する基本的な使い方です。

次のセクションでは、時間の単位変換について詳しく見ていきます。

時間の単位変換の基本

Pythonでは、時間の単位を簡単に変換することができます。

ここでは、秒、分、時間の相互変換について解説します。

秒から分への変換

計算方法

秒を分に変換するには、秒数を60で割るだけです。

例えば、120秒は2分になります。

コード例

以下に、秒を分に変換するPythonコードの例を示します。

# 秒を分に変換する関数
def seconds_to_minutes(seconds):
    minutes = seconds / 60
    return minutes
# 例: 120秒を分に変換
seconds = 120
minutes = seconds_to_minutes(seconds)
print(f"{seconds}秒は{minutes}分です")

このコードを実行すると、以下のような結果が得られます。

120秒は2.0分です

分から時間への変換

計算方法

分を時間に変換するには、分数を60で割るだけです。

例えば、90分は1.5時間になります。

コード例

以下に、分を時間に変換するPythonコードの例を示します。

# 分を時間に変換する関数
def minutes_to_hours(minutes):
    hours = minutes / 60
    return hours
# 例: 90分を時間に変換
minutes = 90
hours = minutes_to_hours(minutes)
print(f"{minutes}分は{hours}時間です")

このコードを実行すると、以下のような結果が得られます。

90分は1.5時間です

秒から時間への変換

計算方法

秒を時間に変換するには、秒数を3600で割るだけです。

3600は1時間が3600秒であることに基づいています。

例えば、7200秒は2時間になります。

コード例

以下に、秒を時間に変換するPythonコードの例を示します。

# 秒を時間に変換する関数
def seconds_to_hours(seconds):
    hours = seconds / 3600
    return hours
# 例: 7200秒を時間に変換
seconds = 7200
hours = seconds_to_hours(seconds)
print(f"{seconds}秒は{hours}時間です")

このコードを実行すると、以下のような結果が得られます。

7200秒は2.0時間です

以上が、基本的な時間の単位変換の方法です。

次に、より複雑な時間の変換について解説します。

複雑な時間の変換

ここでは、より複雑な時間の変換について解説します。

具体的には、秒を時・分・秒に変換する方法と、逆に時・分・秒を秒に変換する方法について説明します。

秒を時・分・秒に変換

計算方法

秒を時・分・秒に変換するためには、以下の手順を踏みます。

  1. 秒を3600で割って、時間を求めます。
  2. 残りの秒数を3600で割った余りを使って、分を求めます。
  3. 最後に、残りの秒数を60で割った余りを使って、秒を求めます。

例えば、3661秒を時・分・秒に変換する場合を考えます。

  1. 3661秒 ÷ 3600 = 1時間(余り61秒)
  2. 61秒 ÷ 60 = 1分(余り1秒)
  3. 残りの1秒

したがって、3661秒は1時間1分1秒となります。

コード例

以下に、Pythonで秒を時・分・秒に変換するコード例を示します。

def convert_seconds_to_hms(seconds):
    # 時間を求める
    hours = seconds // 3600
    # 残りの秒数を求める
    remaining_seconds = seconds % 3600
    # 分を求める
    minutes = remaining_seconds // 60
    # 残りの秒数を求める
    seconds = remaining_seconds % 60
    return hours, minutes, seconds
# 例として3661秒を変換
seconds = 3661
hours, minutes, seconds = convert_seconds_to_hms(seconds)
print(f"{hours}時間{minutes}分{seconds}秒")

このコードを実行すると、以下のような結果が得られます。

1時間1分1秒

時・分・秒を秒に変換

計算方法

時・分・秒を秒に変換するためには、以下の手順を踏みます。

  1. 時間を3600で掛けて、秒に変換します。
  2. 分を60で掛けて、秒に変換します。
  3. 最後に、すべての秒を合計します。

例えば、1時間1分1秒を秒に変換する場合を考えます。

  1. 1時間 × 3600 = 3600秒
  2. 1分 × 60 = 60秒
  3. 1秒

したがって、1時間1分1秒は3661秒となります。

コード例

以下に、Pythonで時・分・秒を秒に変換するコード例を示します。

def convert_hms_to_seconds(hours, minutes, seconds):
    # 時間を秒に変換
    total_seconds = hours * 3600
    # 分を秒に変換
    total_seconds += minutes * 60
    # 秒を合計
    total_seconds += seconds
    return total_seconds
# 例として1時間1分1秒を変換
hours = 1
minutes = 1
seconds = 1
total_seconds = convert_hms_to_seconds(hours, minutes, seconds)
print(f"{total_seconds}秒")

このコードを実行すると、以下のような結果が得られます。

3661秒

以上で、秒を時・分・秒に変換する方法と、時・分・秒を秒に変換する方法についての解説を終わります。

これらの方法を使えば、時間の単位を自由に変換することができます。

実用的な例

ここでは、Pythonを使って実際に役立つプログラムを作成する方法を紹介します。

具体的には、タイマーの作成と時間のフォーマット変換について説明します。

タイマーの作成

タイマーは、特定の時間が経過した後に何かを実行するためのプログラムです。

例えば、料理の時間を計るためのキッチンタイマーや、一定時間ごとに通知を送るリマインダーなどが考えられます。

要件定義

タイマーの基本的な要件は以下の通りです。

  1. ユーザーが設定した時間(秒単位)をカウントダウンする。
  2. カウントダウンが終了したら、メッセージを表示する。

コード例

以下に、Pythonでタイマーを作成するためのサンプルコードを示します。

import time
def countdown_timer(seconds):
    while seconds:
        mins, secs = divmod(seconds, 60)
        timer = '{:02d}:{:02d}'.format(mins, secs)
        print(timer, end="\r")
        time.sleep(1)
        seconds -= 1
    print("タイマー終了!")
# 例: 10秒のタイマーを設定
countdown_timer(10)

このコードでは、timeモジュールを使用して1秒ごとにカウントダウンを行い、指定された時間が経過すると「タイマー終了!」というメッセージを表示します。

時間のフォーマット変換

時間のフォーマット変換は、異なる形式の時間表記を相互に変換するために使用されます。

例えば、24時間制の時間を12時間制に変換する場合や、ISO 8601形式の日時を人間が読みやすい形式に変換する場合などがあります。

要件定義

時間のフォーマット変換の基本的な要件は以下の通りです。

  1. 入力された時間を指定されたフォーマットに変換する。
  2. 変換後の時間を表示する。

コード例

以下に、Pythonで時間のフォーマット変換を行うためのサンプルコードを示します。

from datetime import datetime
def format_time(input_time, input_format, output_format):
    # 入力された時間をdatetimeオブジェクトに変換
    dt = datetime.strptime(input_time, input_format)
    # 指定されたフォーマットに変換
    formatted_time = dt.strftime(output_format)
    return formatted_time
# 例: 24時間制の時間を12時間制に変換
input_time = "14:30"
input_format = "%H:%M"
output_format = "%I:%M %p"
formatted_time = format_time(input_time, input_format, output_format)
print("変換後の時間:", formatted_time)

このコードでは、datetimeモジュールを使用して入力された時間を指定されたフォーマットに変換しています。

例として、24時間制の時間 14:30 を12時間制の時間 02:30 PM に変換しています。

以上が、タイマーの作成と時間のフォーマット変換の実用的な例です。

これらの例を参考にして、さらに複雑な時間操作を行うプログラムを作成してみてください。

目次から探す