Python|時刻を12時間表示・AM/PM表記にする

1. はじめに

Pythonでは、時刻の表示形式を柔軟に変更することができます。特に「12時間表示」と「AM/PM表記」は、英語圏で一般的に使われる形式であり、レポートやログの出力形式を変更する際に便利です。
本記事では、Pythonで時刻を12時間表記に変換する方法と、AM/PMを含めて表示する方法について、具体的なコード例とともに丁寧に解説します。

初心者でも理解できるように、基礎から応用、注意点までを網羅的に紹介しますので、ぜひ最後までご覧ください。

 

2. Pythonで12時間表示・AM/PM表記に変換する基本方法

strftime()を使って12時間表示にする

Pythonでは、datetimeモジュールのstrftime()メソッドを使うことで、日付や時刻を文字列にフォーマットできます。
12時間表記にするには、フォーマット文字列に%I(時:12時間制)と%p(AM/PM)を使います。

from datetime import datetime

# 現在の時刻を取得
now = datetime.now()

# 12時間表示(AM/PM付き)に変換
formatted_time = now.strftime("%I:%M %p")

print("12時間表示の時刻:", formatted_time)

実行結果:

12時間表示の時刻: 09:30 PM

主なフォーマット指定子

  • %I:時(01〜12)
  • %M:分(00〜59)
  • %p:AMまたはPM

この方法により、24時間表記から12時間表記へ簡単に変換できます。

 

3. よくある使い方・応用例

3-1. 入力された24時間形式の時刻を12時間形式に変換する

たとえば、ユーザーから「23:15」のような文字列を受け取り、それを12時間表記で表示したい場合は以下のようにします。

from datetime import datetime

# 入力された24時間形式の文字列
input_time = "23:15"

# datetimeオブジェクトに変換
dt_obj = datetime.strptime(input_time, "%H:%M")

# 12時間表記に変換
output_time = dt_obj.strftime("%I:%M %p")

print("12時間表示:", output_time)

実行結果:

12時間表示: 11:15 PM

3-2. Webアプリでの表示フォーマットとして活用

FlaskやDjangoなどのWebアプリケーションでは、ユーザー向けのUIにおいて12時間表記が求められることがあります。たとえばチャットのタイムスタンプやログ出力などに適しています。

# Flaskアプリでテンプレートに渡す例
@app.route('/')
def index():
    now = datetime.now()
    time_12h = now.strftime("%I:%M %p")
    return render_template('index.html', time=time_12h)

このようにテンプレートエンジンに渡す前にフォーマットしておけば、フロント側で複雑な変換処理を省けます。

 

4. 注意点・エラー対策

4-1. %I(12時間制)と%H(24時間制)の違いに注意

%I01〜12までしか扱わないため、24時間制の値を直接12時間制で解釈するとエラーや誤解が生じます。たとえば、「23時」を%Iでパースしようとすると、エラーになります。

4-2. 文字列のパースにはstrptime()を使う

文字列→datetimeへの変換にはstrptime()を使いますが、フォーマットが一致しないとValueErrorが発生します。以下は例です。

# フォーマットと文字列が一致しない場合の例
time_str = "23時15分"

# "%H:%M" 形式でないためエラーになる
dt_obj = datetime.strptime(time_str, "%H:%M")

実行結果:

ValueError: time data '23時15分' does not match format '%H:%M'

このように、フォーマット文字列と実際のデータ形式は必ず一致させましょう。

4-3. 時刻が「00:00」の場合の扱い

「00:00」は12時間表記では「12:00 AM」となります。
この挙動を知らずに使うと「AMなのに12時?」と混乱することもあるので注意が必要です。

 

5. まとめ

  • Pythonではstrftime()を使って簡単に12時間表示+AM/PM表記に変換できる
  • %I(12時間制の時)と%p(AM/PM)を活用しよう
  • Webアプリやログ表示、英語圏向けのシステムで活躍する知識
  • strptime()と組み合わせれば、文字列からの変換もスムーズ

実務では、レポートの出力形式のカスタマイズや、海外ユーザー向けのUI設計でよく使われる知識です。
Pythonのフォーマット指定子を覚えておくことで、表現力の高いアプリケーション開発ができるようになります。

最後に、学習のコツとしては、「まず現在時刻で実験してから応用に進む」ことがおすすめです。
まずは今回紹介したコードを自分の環境で実行して、挙動を確認してみましょう。

タイトルとURLをコピーしました