【Python】文字列を時刻(time)オブジェクトに変換・整形する方法

PythonでCSVデータやログファイルから「時刻情報」のみを読み込み、それをプログラムで扱える time オブジェクトに変換したり、逆に表示用に任意のフォーマットへ整形したりする方法を解説します。

ここでは、工場の始業チャイム時間を管理するシステムを想定し、設定ファイルから読み込んだ文字列を変換処理するコードを実装します。

目次

実装例:始業時間の読み込みとフォーマット変換

設定データとして渡された "08-30-00" という文字列を解析して time オブジェクトに変換し、その後、社内掲示板用に "08時30分00秒" という形式の文字列に再変換します。

ソースコード

from datetime import datetime, time

# --- 1. 文字列から time オブジェクトへの変換 ---
# 設定ファイルから読み込んだ始業時間(文字列)
# 想定フォーマット: "時-分-秒"
setting_value = "08-30-00"

# datetime.strptime(文字列, フォーマット) で一度 datetime型に解析・変換します
# %H: 時(24時間表記), %M: 分, %S: 秒
# 区切り文字には、入力文字列に合わせてハイフンを使用しています
parsed_dt = datetime.strptime(setting_value, "%H-%M-%S")

# .time() メソッドを使用して、日付部分(1900-01-01等)を切り捨て、
# 純粋な「時刻データ」だけを抽出します
start_time = parsed_dt.time()

print(f"変換後の型  : {type(start_time)}")
print(f"時刻データ  : {start_time}")

print("-" * 30)

# --- 2. time オブジェクトから表示用文字列への変換 ---
# strftime(フォーマット) を使用して、人間が読みやすい形式に整形します
# ここでは日本語の「時・分・秒」を使用した形式に変換
display_text = start_time.strftime("%H時%M分%S秒")

print(f"掲示用文字列: {display_text}")
print(f"出力の型    : {type(display_text)}")

実行結果

変換後の型  : <class 'datetime.time'>
時刻データ  : 08:30:00
------------------------------
掲示用文字列: 08時30分00秒
出力の型    : <class 'str'>

解説

文字列 → time (datetime.strptime().time())

Pythonの標準ライブラリでは、文字列を直接 time オブジェクトに変換する関数は一般的ではありません。 そのため、以下の2ステップの手順を踏みます。

  1. datetime.strptime(string, format): 文字列を一度「日付+時刻」を持つ datetime オブジェクトに変換します。この際、日付部分はデフォルト値(1900年1月1日)が補完されます。
  2. .time(): datetime オブジェクトから時刻部分のみを抽出します。これで不要な日付情報が削除されます。

time → 文字列 (strftime)

time オブジェクトの strftime() メソッドを使うことで、時刻を任意の書式で文字列化できます。

  • 構文: time_object.strftime(format)
  • 主なフォーマット指定子:
    • %H: 時(00-23)
    • %M: 分(00-59)
    • %S: 秒(00-59)
    • %p: AM/PM(%Iと組み合わせて使用)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次