diff --git a/format-clock-edge-cases/timeConverter.js b/format-clock-edge-cases/timeConverter.js index 310c07bd9..4018e82f3 100644 --- a/format-clock-edge-cases/timeConverter.js +++ b/format-clock-edge-cases/timeConverter.js @@ -1,11 +1,29 @@ function formatAs12HourClock(time) { + const slicedHours = time.slice(0, 2); + const hours = Number(slicedHours); + const slicedMinutes = time.slice(-2); + const minutes = Number(slicedMinutes); + const pattern = /^\d{2}:\d{2}$/; - const hours = Number(time.slice(0, 2)); + if (typeof time === "string" && pattern.test(time)) { + if (minutes < 60) { + if (hours < 24) { + if (hours === 0) { + return `12:${slicedMinutes} am`; + } else if (hours === 12) { + return `${hours}:${slicedMinutes} pm`; + } else if (hours > 12) { + return `${(hours - 12).toString().padStart(2, "0")}:${slicedMinutes} pm`; + } else { + return `${time} am`; + } + } - if (hours > 12) { - return `${hours - 12}:00 pm`; + return `Please check your HH input must be less than 24`; + } + return `Please check your MM input must be less than 60`; } - return `${time} am`; + return `Please check your format input must be 'HH:MM'`; } -export {formatAs12HourClock}; +export { formatAs12HourClock }; diff --git a/format-clock-edge-cases/timeConverter.test.js b/format-clock-edge-cases/timeConverter.test.js index 88f2af094..9515fb442 100644 --- a/format-clock-edge-cases/timeConverter.test.js +++ b/format-clock-edge-cases/timeConverter.test.js @@ -1,11 +1,40 @@ -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("14:00"), "02: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("can correctly convert midnight time", function () { + assert.equal(formatAs12HourClock("00:00"), "12:00 am"); +}); + +test("can correctly convert midday time", function () { + assert.equal(formatAs12HourClock("12:00"), "12:00 pm"); +}); + +test("can respond to the invalid MM input", function () { + assert.equal( + formatAs12HourClock("22:60"), + "Please check your MM input must be less than 60" + ); +}); + +test("can respond to the invalid HH input", function () { + assert.equal( + formatAs12HourClock("24:00"), + "Please check your HH input must be less than 24" + ); +}); + +test("can respond to the invalid format input", function () { + assert.equal( + formatAs12HourClock("2400"), + "Please check your format input must be 'HH:MM'" + ); });