處理使用者輸入的 12 小時制時間(如 02:30:00 pm)並轉換為 24 小時制(14:30:00)是常見需求。善用 strtotime() 解析並配合 date() 格式化,可輕鬆完成。
<?php
function to24Hour(int|string $hour, int|string $min, int|string $sec, string $meridiem): string {
// 補零確保兩位數
$h = sprintf('%02d', (int)$hour);
$m = sprintf('%02d', (int)$min);
$s = sprintf('%02d', (int)$sec);
$meridiem = strtolower($meridiem) === 'am' ? 'am' : 'pm';
// strtotime 可直接解析 "HH:MM:SSam/pm"
return date('H:i:s', strtotime("{$h}:{$m}:{$s}{$meridiem}"));
}
// 測試
echo to24Hour(1, 2, 3, 'pm'); // 13:02:03
echo to24Hour('02', '30', '00', 'pm'); // 14:30:00
?>
若輸入為完整字串 "02:30:00 pm",更簡單:
function convert12to24(string $time12): string {
return date('H:i:s', strtotime($time12));
}
echo convert12to24('02:30:00 pm'); // 14:30:00
strtotime 依賴系統時區,建議先 date_default_timezone_set('UTC') 或傳入明確時區字串。