From 650452eff0446ca11f625e6f01795a3f6ca4bac3 Mon Sep 17 00:00:00 2001 From: Jestavo1 Date: Thu, 8 Oct 2026 15:17:19 +0100 Subject: [PATCH 1/2] Fix format clock edge cases --- format-clock-edge-cases/timeConverter.js | 14 ++++++++++-- format-clock-edge-cases/timeConverter.test.js | 22 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/format-clock-edge-cases/timeConverter.js b/format-clock-edge-cases/timeConverter.js index 310c07bd9..052041357 100644 --- a/format-clock-edge-cases/timeConverter.js +++ b/format-clock-edge-cases/timeConverter.js @@ -1,11 +1,21 @@ function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); + const minutes = time.slice(3); + + if (hours === 0) { + return `12:${minutes} am`; + } + + if (hours === 12) { + return `${time} pm`; + } if (hours > 12) { - return `${hours - 12}:00 pm`; + return `${hours - 12}:${minutes} pm`; } + return `${time} am`; } -export {formatAs12HourClock}; +export {formatAs12HourClock}; \ No newline at end of file diff --git a/format-clock-edge-cases/timeConverter.test.js b/format-clock-edge-cases/timeConverter.test.js index 88f2af094..8ef5cc3e3 100644 --- a/format-clock-edge-cases/timeConverter.test.js +++ b/format-clock-edge-cases/timeConverter.test.js @@ -9,3 +9,25 @@ test("correctly convert time after 12:00", function(){ test("can correctly convert morning time", function() { assert.equal(formatAs12HourClock("08:00"), "08:00 am"); }); + +test("correctly convert midnight", function() { + assert.equal(formatAs12HourClock("00:00"), "12:00 am"); +}); +test("correctly convert noon", function() { + assert.equal(formatAs12HourClock("12:00"), "12:00 pm"); +}); +test("correctly convert 13:00", function() { + assert.equal(formatAs12HourClock("13:00"), "1:00 pm"); +}); +test("correctly keep the minutes", function() { + assert.equal(formatAs12HourClock("13:45"), "1:45 pm"); +}); +test("correctly convert 12:30", function() { + assert.equal(formatAs12HourClock("12:30"), "12:30 pm"); +}); +test("correctly convert the last minute of the day", function() { + assert.equal(formatAs12HourClock("23:59"), "11:59 pm"); +}); +test("correctly convert 00:30", function() { + assert.equal(formatAs12HourClock("00:30"), "12:30 am"); +}); \ No newline at end of file From 6c8b749b6b376e3a1b60dccf189ec83f9fcee0cd Mon Sep 17 00:00:00 2001 From: Jestavo1 Date: Mon, 12 Oct 2026 01:43:45 +0100 Subject: [PATCH 2/2] Fix leading zeros in 12-hour clock output --- format-clock-edge-cases/timeConverter.js | 16 +++++----- format-clock-edge-cases/timeConverter.test.js | 31 ++++++++++++++----- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/format-clock-edge-cases/timeConverter.js b/format-clock-edge-cases/timeConverter.js index 052041357..23b01d766 100644 --- a/format-clock-edge-cases/timeConverter.js +++ b/format-clock-edge-cases/timeConverter.js @@ -1,21 +1,21 @@ -function formatAs12HourClock(time) { +function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); - const minutes = time.slice(3); + const minutes = time.slice(3, 5); if (hours === 0) { return `12:${minutes} am`; } - if (hours === 12) { - return `${time} pm`; + if (hours < 12) { + return `${String(hours).padStart(2, "0")}:${minutes} am`; } - if (hours > 12) { - return `${hours - 12}:${minutes} pm`; + if (hours === 12) { + return `12:${minutes} pm`; } - return `${time} am`; + return `${String(hours - 12).padStart(2, "0")}:${minutes} pm`; } -export {formatAs12HourClock}; \ No newline at end of file +export { formatAs12HourClock }; diff --git a/format-clock-edge-cases/timeConverter.test.js b/format-clock-edge-cases/timeConverter.test.js index 8ef5cc3e3..5fa97f73a 100644 --- a/format-clock-edge-cases/timeConverter.test.js +++ b/format-clock-edge-cases/timeConverter.test.js @@ -1,13 +1,30 @@ -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("correctly convert 13:00 with a leading zero", function () { + assert.equal(formatAs12HourClock("13:00"), "01:00 pm"); +}); + +test("correctly keep the minutes", function () { + assert.equal(formatAs12HourClock("13:45"), "01:45 pm"); +}); + +test("correctly convert midnight", function () { + assert.equal(formatAs12HourClock("00:00"), "12:00 am"); }); -test("can correctly convert morning time", function() { - assert.equal(formatAs12HourClock("08:00"), "08:00 am"); +test("correctly convert noon", function () { + assert.equal(formatAs12HourClock("12:00"), "12:00 pm"); }); test("correctly convert midnight", function() { @@ -17,10 +34,10 @@ test("correctly convert noon", function() { assert.equal(formatAs12HourClock("12:00"), "12:00 pm"); }); test("correctly convert 13:00", function() { - assert.equal(formatAs12HourClock("13:00"), "1:00 pm"); + assert.equal(formatAs12HourClock("13:00"), "01:00 pm"); }); test("correctly keep the minutes", function() { - assert.equal(formatAs12HourClock("13:45"), "1:45 pm"); + assert.equal(formatAs12HourClock("13:45"), "01:45 pm"); }); test("correctly convert 12:30", function() { assert.equal(formatAs12HourClock("12:30"), "12:30 pm");