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時間形式への変換をシンプルに実装できます。
-
Pythonでキロメートルをマイルに変換する方法|初心者向けサンプルコード付き解説
本記事では、Pythonを使って「キロメートル(km)」を「マイル(mile)」に変換するプログラムの作成方法を、初心者にもわかりやすく解説します。課題の概要今回扱う問題は次のとおりです。問題文: キロメートル単位で与えられた距離を、マイル単位に変換して出力する。変換には以下の換算式を使用します。1キロメートル = 0.621371 マイル使用する変換公式Miles = kilometer * 0.621371つまり、キロメートルの値に定数「0.621371」を掛けるだけで、マイルへの換算が可能です。それでは、実際のコードを見てみましょう。実装例kilometers = 5.5 # 換算係数:
-
Pythonで16進数の文字列を10進数に変換する方法を解説
この記事では、16進数の文字列を10進数に変換する問題の解決策について詳しく解説します。課題の概要16進数形式の文字列が与えられたとき、それを対応する10進数の値に変換することを目標とします。例えば、16進数の「F」は10進数では「15」に相当します。この問題には主に2つのアプローチがあります。力ずく(ブルートフォース)な手法:int関数を使った明示的な型変換組み込みモジュールを活用する手法:astモジュールのliteral_eval関数を使用方法1:int関数を使った変換最もシンプルで一般的な方法は、Pythonの組み込み関数であるint()を利用するものです。この関数は2つの引数を受け取り