diff --git a/format-clock-edge-cases/timeConverter.js b/format-clock-edge-cases/timeConverter.js index 310c07bd9..f4a24c094 100644 --- a/format-clock-edge-cases/timeConverter.js +++ b/format-clock-edge-cases/timeConverter.js @@ -1,11 +1,10 @@ function formatAs12HourClock(time) { + const [hourPart, minutePart] = time.split(":"); + const hours = Number(hourPart); - const hours = Number(time.slice(0, 2)); + const period = hours < 12 ? "am" : "pm"; - if (hours > 12) { - return `${hours - 12}:00 pm`; - } - return `${time} am`; + const displayHour = hours % 12 || 12; + return `${displayHour}:${minutePart}${period}`; } - -export {formatAs12HourClock}; +export { formatAs12HourClock }; diff --git a/format-clock-edge-cases/timeConverter.test.js b/format-clock-edge-cases/timeConverter.test.js index 88f2af094..bc3a9a933 100644 --- a/format-clock-edge-cases/timeConverter.test.js +++ b/format-clock-edge-cases/timeConverter.test.js @@ -1,11 +1,41 @@ -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:00pm"); }); -test("can correctly convert morning time", function() { - assert.equal(formatAs12HourClock("08:00"), "08:00 am"); +test("converts a single-digit morning hour and drops leading zero", () => { + assert.equal(formatAs12HourClock("08:00"), "8:00am"); +}); +test("converts exactly to midnight", () => { + assert.equal(formatAs12HourClock("00:00"), "12:00am"); +}); +test("converts time just after midnight", () => { + assert.equal(formatAs12HourClock("00:30"), "12:30am"); +}); +test("converts the last minute before noon", () => { + assert.equal(formatAs12HourClock("11:59"), "11:59am"); +}); +test("converts exact noon to pm", () => { + assert.equal(formatAs12HourClock("12:00"), "12:00pm"); +}); +test("convert time just after noon", () => { + assert.equal(formatAs12HourClock("12:30"), "12:30pm"); +}); +test("converts the first afternoon hour", () => { + assert.equal(formatAs12HourClock("13:00"), "1:00pm"); +}); +test("converts late evening hour", () => { + assert.equal(formatAs12HourClock("23:00"), "11:00pm"); +}); +test("converts last minute of the day", () => { + assert.equal(formatAs12HourClock("23:59"), "11:59pm"); +}); +test("preserves minutes with leading zero", () => { + assert.equal(formatAs12HourClock("09:05"), "9:05am"); +}); +test("preserves non-zero minutes", () => { + assert.equal(formatAs12HourClock("14:45"), "2:45pm"); });