Skip to content

Commit 42f5fa5

Browse files
committed
format-time.js
1 parent 75983a9 commit 42f5fa5

File tree

1 file changed

+49
-15
lines changed

1 file changed

+49
-15
lines changed

Sprint-2/5-stretch-extend/format-time.js

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,58 @@
22
// Make sure to do the prep before you do the coursework
33
// Your task is to write tests for as many different groups of input data or edge cases as you can, and fix any bugs you find.
44

5+
// function formatAs12HourClock(time) {
6+
// const hours = Number(time.slice(0, 2));
7+
// if (hours > 12) {
8+
// return `${hours - 12}:00 pm`;
9+
// }
10+
// return `${time} am`;
11+
// }
12+
13+
// const currentOutput = formatAs12HourClock("08:00");
14+
// const targetOutput = "08:00 am";
15+
// console.assert(
16+
// currentOutput === targetOutput,
17+
// `current output: ${currentOutput}, target output: ${targetOutput}`
18+
// );
19+
20+
// const currentOutput2 = formatAs12HourClock("23:00");
21+
// const targetOutput2 = "11:00 pm";
22+
// console.assert(
23+
// currentOutput2 === targetOutput2,
24+
// `current output: ${currentOutput2}, target output: ${targetOutput2}`
25+
// );
26+
27+
28+
529
function formatAs12HourClock(time) {
630
const hours = Number(time.slice(0, 2));
31+
const minutes = time.slice(3, 5);
32+
33+
if (hours === 0) {
34+
return `12:${minutes} am`;
35+
}
36+
if (hours === 12) {
37+
return `12:${minutes} pm`;
38+
}
739
if (hours > 12) {
8-
return `${hours - 12}:00 pm`;
40+
return `${pad(hours - 12)}:${minutes} pm`;
941
}
10-
return `${time} am`;
42+
return `${pad(hours)}:${minutes} am`;
43+
}
44+
45+
function pad(num) {
46+
return num.toString().padStart(2, "0");
1147
}
1248

13-
const currentOutput = formatAs12HourClock("08:00");
14-
const targetOutput = "08:00 am";
15-
console.assert(
16-
currentOutput === targetOutput,
17-
`current output: ${currentOutput}, target output: ${targetOutput}`
18-
);
19-
20-
const currentOutput2 = formatAs12HourClock("23:00");
21-
const targetOutput2 = "11:00 pm";
22-
console.assert(
23-
currentOutput2 === targetOutput2,
24-
`current output: ${currentOutput2}, target output: ${targetOutput2}`
25-
);
49+
// Test cases for different groups of input data and edge cases
50+
console.assert(formatAs12HourClock("00:00") === "12:00 am", "Test midnight failed");
51+
console.assert(formatAs12HourClock("01:00") === "01:00 am", "Test 1am failed");
52+
console.assert(formatAs12HourClock("08:00") === "08:00 am", "Test 8am failed");
53+
console.assert(formatAs12HourClock("12:00") === "12:00 pm", "Test noon failed");
54+
console.assert(formatAs12HourClock("13:00") === "01:00 pm", "Test 1pm failed");
55+
console.assert(formatAs12HourClock("11:59") === "11:59 am", "Test 11:59am failed");
56+
console.assert(formatAs12HourClock("12:59") === "12:59 pm", "Test 12:59pm failed");
57+
console.assert(formatAs12HourClock("15:30") === "03:30 pm", "Test 3:30pm failed");
58+
console.assert(formatAs12HourClock("23:00") === "11:00 pm", "Test 11pm failed");
59+
console.assert(formatAs12HourClock("23:59") === "11:59 pm", "Test 11:59pm failed");

0 commit comments

Comments
 (0)