From ee44992b6bafe0bf559a7b07a74e958816e1a372 Mon Sep 17 00:00:00 2001 From: Rhoda Ajiroba Date: Thu, 8 Oct 2026 02:28:37 +0100 Subject: [PATCH] Fix 12-hour clock conversion and add edge case tests --- format-clock-edge-cases/timeConverter.js | 19 ++++-- format-clock-edge-cases/timeConverter.test.js | 66 +++++++++++++++++-- 2 files changed, 73 insertions(+), 12 deletions(-) diff --git a/format-clock-edge-cases/timeConverter.js b/format-clock-edge-cases/timeConverter.js index 310c07bd9..139a750ab 100644 --- a/format-clock-edge-cases/timeConverter.js +++ b/format-clock-edge-cases/timeConverter.js @@ -1,11 +1,16 @@ -function formatAs12HourClock(time) { - +export function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); + const minutes = time.slice(2); + + const period = hours >= 12 ? "pm" : "am"; + + let hours12 = hours % 12; - if (hours > 12) { - return `${hours - 12}:00 pm`; + if (hours12 === 0) { + hours12 = 12; } - return `${time} am`; -} -export {formatAs12HourClock}; + const formattedHours = String(hours12).padStart(2, "0"); + + return `${formattedHours}${minutes} ${period}`; +} diff --git a/format-clock-edge-cases/timeConverter.test.js b/format-clock-edge-cases/timeConverter.test.js index 88f2af094..18d41cffa 100644 --- a/format-clock-edge-cases/timeConverter.test.js +++ b/format-clock-edge-cases/timeConverter.test.js @@ -1,11 +1,67 @@ -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", function () { + 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", function () { + assert.equal(formatAs12HourClock("08:00"), "08:00 am"); +}); + +test("converts midnight correctly", function () { + assert.equal(formatAs12HourClock("00:00"), "12:00 am"); +}); + +test("converts one minute after midnight", function () { + assert.equal(formatAs12HourClock("00:01"), "12:01 am"); +}); + +test("converts early morning time", function () { + assert.equal(formatAs12HourClock("01:30"), "01:30 am"); +}); + +test("converts last minute before noon", function () { + assert.equal(formatAs12HourClock("11:59"), "11:59 am"); +}); + +test("converts noon correctly", function () { + assert.equal(formatAs12HourClock("12:00"), "12:00 pm"); +}); + +test("converts one minute after noon", function () { + assert.equal(formatAs12HourClock("12:01"), "12:01 pm"); +}); + +test("converts afternoon time", function () { + assert.equal(formatAs12HourClock("13:30"), "01:30 pm"); +}); + +test("converts evening time", function () { + assert.equal(formatAs12HourClock("18:45"), "06:45 pm"); +}); + +test("converts last minute of the day", function () { + assert.equal(formatAs12HourClock("23:59"), "11:59 pm"); +}); + +test("converts 09:59 correctly", function () { + assert.equal(formatAs12HourClock("09:59"), "09:59 am"); +}); + +test("converts 10:00 correctly", function () { + assert.equal(formatAs12HourClock("10:00"), "10:00 am"); +}); + +test("converts 12:59 correctly", function () { + assert.equal(formatAs12HourClock("12:59"), "12:59 pm"); +}); + +test("converts 13:00 correctly", function () { + assert.equal(formatAs12HourClock("13:00"), "01:00 pm"); +}); + +test("converts 23:00 correctly", function () { + assert.equal(formatAs12HourClock("23:00"), "11:00 pm"); });