Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 23 additions & 4 deletions format-clock-edge-cases/timeConverter.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,30 @@
function formatAs12HourClock(time) {

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

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.


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

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

if (hours > 12) {
return `${hours - 12}:00 pm`;
const time = hours - 12;

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.

time is also the name of the parameter.

Could you explain why using the same name for a local variable and a parameter is considered bad practice?

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.

Time is already the parameter in my function, declaring it again in the same scope can cause naming conflict.


if (time < 10) {
return `0${time}:${minutes} pm`;
}

return `${hours - 12}:${minutes} pm`;
Comment on lines +16 to +20

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.

Could you try simplifying the code on lines 16-20 into one line of code by taking advantage of a String's built-in method (function) ?

}
return `${time} am`;

if (hours < 10) {
return `0${hours}:${minutes} am`;
}

return `${hours}:${minutes} am`;
}

export {formatAs12HourClock};
export { formatAs12HourClock };
38 changes: 33 additions & 5 deletions format-clock-edge-cases/timeConverter.test.js
Comment thread
cjyuan marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1,11 +1,39 @@
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 convert morning time from 08:00 to 08:00 am", function () {
assert.equal(formatAs12HourClock("08:00"), "08:00 am");
});

test("converts 14:00 to 02:00 pm ", function () {
assert.equal(formatAs12HourClock("14:00"), "02:00 pm");
});

test("converts 23:59 to 11:59 ", function () {
assert.equal(formatAs12HourClock("23:59"), "11:59 pm");
});

test("converts 12:01 to 12:01 ", function () {
assert.equal(formatAs12HourClock("12:01"), "12:01 pm");
});

test("converts 00:00 to 12:00 am ", function () {
assert.equal(formatAs12HourClock("00:00"), "12:00 am");
});

test("converts 11:59 to 11:59 am ", function () {
assert.equal(formatAs12HourClock("11:59"), "11:59 am");
});
Comment on lines +17 to +31

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.

Duplicate test.

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.

Thank you for the feedback. I've made changes, added the requested tests, and run node --test to check result.


test("can convert 00:34 to 12:34 am ", function () {
assert.equal(formatAs12HourClock("00:34"), "12:34 am");
});

test("converts 12:00 to 12:00 pm ", function () {
assert.equal(formatAs12HourClock("12:00"), "12:00 pm");
});
Loading