From 077e02e031983ad8cc8190073aea8952e3c642b1 Mon Sep 17 00:00:00 2001 From: Vaidah Date: Sun, 4 Oct 2026 22:46:04 +0200 Subject: [PATCH] fix formatAs12HourClock edge cases and add tests --- format-clock-edge-cases/timeConverter.js | 14 +++++-- format-clock-edge-cases/timeConverter.test.js | 38 ++++++++++++++++--- 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/format-clock-edge-cases/timeConverter.js b/format-clock-edge-cases/timeConverter.js index 310c07bd9..3524e1325 100644 --- a/format-clock-edge-cases/timeConverter.js +++ b/format-clock-edge-cases/timeConverter.js @@ -1,11 +1,19 @@ function formatAs12HourClock(time) { - const hours = Number(time.slice(0, 2)); + const minutes = time.slice(3, 5); + + if (hours === 0) { + return `12:${minutes} am`; + } + + if (hours === 12) { + return `12:${minutes} pm`; + } if (hours > 12) { - return `${hours - 12}:00 pm`; + return `${String(hours - 12).padStart(2, "0")}:${minutes} pm`; } return `${time} am`; } -export {formatAs12HourClock}; +export { formatAs12HourClock }; diff --git a/format-clock-edge-cases/timeConverter.test.js b/format-clock-edge-cases/timeConverter.test.js index 88f2af094..a3eaf2375 100644 --- a/format-clock-edge-cases/timeConverter.test.js +++ b/format-clock-edge-cases/timeConverter.test.js @@ -1,11 +1,39 @@ -import {formatAs12HourClock} from "./timeConverter.js"; +import { formatAs12HourClock } from "./timeConverter.js"; import assert from "node:assert"; import test from "node:test"; -test("correctly convert time after 12:00", function(){ - assert.equal(formatAs12HourClock("23:00"), "11:00 pm"); +test("correctly convert time after 12:00", () => { + assert.equal(formatAs12HourClock("23:00"), "11:00 pm"); }); -test("can correctly convert morning time", function() { - assert.equal(formatAs12HourClock("08:00"), "08:00 am"); +test("can correctly convert morning time", () => { + assert.equal(formatAs12HourClock("08:00"), "08:00 am"); +}); + +test("handles midnight correctly", () => { + assert.equal(formatAs12HourClock("00:00"), "12:00 am"); +}); + +test("handles noon correctly", () => { + assert.equal(formatAs12HourClock("12:00"), "12:00 pm"); +}); + +test("handles noon with minutes", () => { + assert.equal(formatAs12HourClock("12:30"), "12:30 pm"); +}); + +test("handles afternoon time with leading zero", () => { + assert.equal(formatAs12HourClock("13:00"), "01:00 pm"); +}); + +test("handles afternoon time with minutes", () => { + assert.equal(formatAs12HourClock("23:45"), "11:45 pm"); +}); + +test("handles early morning with leading zero", () => { + assert.equal(formatAs12HourClock("01:00"), "01:00 am"); +}); + +test("handles just before noon", () => { + assert.equal(formatAs12HourClock("11:59"), "11:59 am"); });