時間格式化(將 "15:3" 轉成 "15:03")
你可以創建一個簡單的函數來處理這個格式化。核心思想是將小時和分鐘拆開,然後使用 padStart() 方法來補零。
/**
* 將時間字串 (hh:m 或 h:mm) 格式化為 hh:mm。
* 例如:"15:3" -> "15:03", "5:8" -> "05:08"
*
* @param {string} timeString 原始的時間字串,格式為 "h:m", "hh:m", "h:mm", "hh:mm"。
* @returns {string} 格式化後的 hh:mm 字串。如果輸入格式無效,可能回傳空字串或原字串。
*/
function formatTime(timeString) {
// 檢查輸入是否為字串且包含冒號
if (typeof timeString !== 'string' || !timeString.includes(':')) {
console.error("無效的時間字串格式:", timeString);
return timeString; // 或拋出錯誤,或回傳空字串
}
const [hoursStr, minutesStr] = timeString.split(':');
// 將字串轉換為數字,並使用 padStart 補零
const formattedHours = String(parseInt(hoursStr, 10)).padStart(2, '0');
const formattedMinutes = String(parseInt(minutesStr, 10)).padStart(2, '0');
// 檢查轉換後的數字是否有效
if (isNaN(parseInt(formattedHours)) || isNaN(parseInt(formattedMinutes))) {
console.error("時間字串解析失敗:", timeString);
return timeString;
}
return `${formattedHours}:${formattedMinutes}`;
}
// 測試
console.log(formatTime("15:3")); // 輸出 "15:03"
console.log(formatTime("5:8")); // 輸出 "05:08"
console.log(formatTime("10:15")); // 輸出 "10:15"
console.log(formatTime("7:0")); // 輸出 "07:00"
console.log(formatTime("23:59")); // 輸出 "23:59"
console.log(formatTime("invalid")); // 輸出 "無效的時間字串格式: invalid"
console.log(formatTime("1:2:3")); // 輸出 "時間字串解析失敗: 1:2:3" (因為split只取前兩個)
timeString.split(':') : 將輸入的字串 timeString 依據冒號 : 分割成一個陣列,例如 "15:3" 會變成 ["15", "3"]。parseInt(hoursStr, 10) / parseInt(minutesStr, 10) : 將分割後的字串(例如 "15" 和 "3")轉換為整數。10 是指定基數為 10,確保正確解析。String(...) : 確保數字轉換回字串,因為 padStart 是字串的方法。.padStart(2, '0') : 這是關鍵方法。2 表示最終字串的最小長度應該是 2。 '0' 表示如果字串長度不足 2,則在左側用 '0' 填充。 例如,"3".padStart(2, '0') 會變成 "03",而 "15".padStart(2, '0') 仍然是 "15"。
: 使用模板字面量將格式化後的小時和分鐘組合回 hh:mm 格式。return
{formattedMinutes}``
留言
張貼留言