Skip to content
Open
16 changes: 12 additions & 4 deletions format-clock-edge-cases/timeConverter.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
function formatAs12HourClock(time) {

const hours = Number(time.slice(0, 2));
const minutes = time.slice(3);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: The .slice() method supports negative indices, which count positions from the end of the string.
For example, str.slice(-3) returns the substring containing last three characters from str.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this an error that needs to be fixed, I thought negative values don't make a real time.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you misunderstood my comment.


if (hours === 12) {
return `12:${minutes}pm`;
}

if (hours === 0) {
return `12:${minutes}am`;
}
Comment thread
cjyuan marked this conversation as resolved.
Resolved

if (hours > 12) {
return `${hours - 12}:00 pm`;
return `${String(hours - 12).padStart(2, "0")}:${minutes}pm`;
}
return `${time} am`;
return `${time}am`;
}

export {formatAs12HourClock};
export { formatAs12HourClock };
26 changes: 21 additions & 5 deletions format-clock-edge-cases/timeConverter.test.js
Comment thread
cjyuan marked this conversation as resolved.
Resolved
Original file line number Diff line number Diff line change
@@ -1,11 +1,27 @@
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:00pm");
});

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:00am");
});

test("can correctly convert morning time", function () {
assert.equal(formatAs12HourClock("12:00"), "12:00pm");
});

test("can correctly convert morning time", function () {
assert.equal(formatAs12HourClock("12:30"), "12:30pm");
});

test("can correctly convert morning time", function () {
assert.equal(formatAs12HourClock("13:30"), "01:30pm");
});

test("can correctly convert morning time", function () {
assert.equal(formatAs12HourClock("00:00"), "12:00am");
});