Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで12時間形式の時刻を24時間形式に変換するプログラムの作り方

本記事では、PCの現在時刻を取得し、12時間形式(AM/PM付き)から24時間形式へ変換するPythonプログラムを紹介します。変換処理には文字列スライシングを活用します。

変換の基本ルール

12時間形式から24時間形式への変換は、次のルールに従います。

  • PM(午後)の場合:時(hour)の部分に12を加算する
  • AM(午前)の場合:そのままの値を使用する

ただし例外として、「12:xx:xx PM」は正午を意味するため12のまま、「12:xx:xx AM」は深夜0時を意味するため「00」に置き換える必要があります。

実行例

入力:07:20:20 PM
出力:19:20:20

アルゴリズム

ステップ1:現在の日時(datetime)を取得する。
ステップ2:日時データから時刻部分のみを抽出する。
ステップ3:文字列スライシングにより、末尾2文字が「PM」か「AM」かを判定する。
ステップ4:「PM」なら時に12を加算し、「AM」なら加算しない。
※先頭が「12」の場合は特別扱い(AMなら00へ、PMなら12のまま)。

サンプルコード

import datetime

def timeconvert(str1):
    # 末尾2文字でAM/PMを判定
    if str1[-2:] == "AM":
        if str1[:2] == "12":   # 深夜0時の場合
            return "00" + str1[2:-2]
        return str1[:-2]
    elif str1[-2:] == "PM":
        if str1[:2] == "12":   # 正午の場合
            return str1[:-2]
        return str(int(str1[:2]) + 12) + str1[2:-2]

dt = datetime.datetime.now()
print("Conversion Of Time ::", timeconvert(dt.strftime("%I:%M:%S %p")))

コードのポイント

  • str1[-2:]:末尾2文字(AM/PM)を取り出す
  • str1[:2]:先頭2文字(時の部分)を取り出す
  • str1[2:-2]:時とAM/PMを除いた「:分:秒」の部分を取り出す
  • dt.strftime("%I:%M:%S %p"):12時間形式(%I)とAM/PM(%p)付きで現在時刻を文字列化する

出力結果

Conversion Of Time :: 19:04:53

このように、文字列スライシングと条件分岐を組み合わせるだけで、外部ライブラリに頼ることなく、12時間形式から24時間形式への変換をシンプルに実装できます。

  1. Pythonでキロメートルをマイルに変換する方法|初心者向けサンプルコード付き解説

    本記事では、Pythonを使って「キロメートル(km)」を「マイル(mile)」に変換するプログラムの作成方法を、初心者にもわかりやすく解説します。課題の概要今回扱う問題は次のとおりです。問題文: キロメートル単位で与えられた距離を、マイル単位に変換して出力する。変換には以下の換算式を使用します。1キロメートル = 0.621371 マイル使用する変換公式Miles = kilometer * 0.621371つまり、キロメートルの値に定数「0.621371」を掛けるだけで、マイルへの換算が可能です。それでは、実際のコードを見てみましょう。実装例kilometers = 5.5 # 換算係数:

  2. Pythonで16進数の文字列を10進数に変換する方法を解説

    この記事では、16進数の文字列を10進数に変換する問題の解決策について詳しく解説します。課題の概要16進数形式の文字列が与えられたとき、それを対応する10進数の値に変換することを目標とします。例えば、16進数の「F」は10進数では「15」に相当します。この問題には主に2つのアプローチがあります。力ずく(ブルートフォース)な手法:int関数を使った明示的な型変換組み込みモジュールを活用する手法:astモジュールのliteral_eval関数を使用方法1:int関数を使った変換最もシンプルで一般的な方法は、Pythonの組み込み関数であるint()を利用するものです。この関数は2つの引数を受け取り