diff --git a/extensions/logbook/src/analyze.test.ts b/extensions/logbook/src/analyze.test.ts index 8be51d77e71b..c621e46a145e 100644 --- a/extensions/logbook/src/analyze.test.ts +++ b/extensions/logbook/src/analyze.test.ts @@ -31,6 +31,8 @@ describe("clockToMs", () => { it("rejects malformed input", () => { expect(clockToMs(DAY, "25:00:00")).toBeNull(); + expect(clockToMs(DAY, "13:05 pm")).toBeNull(); + expect(clockToMs(DAY, "00:05 am")).toBeNull(); expect(clockToMs(DAY, "half past nine")).toBeNull(); expect(clockToMs("not-a-day", "10:00:00")).toBeNull(); }); @@ -160,7 +162,7 @@ describe("parseCardsJson", () => { it("reports actionable errors for the correction round-trip", () => { const result = parseCardsJson({ - raw: JSON.stringify([card({ startTime: "later that day" })]), + raw: JSON.stringify([card({ startTime: "13:05 pm" })]), day: DAY, windowStartMs, windowEndMs, diff --git a/extensions/logbook/src/analyze.ts b/extensions/logbook/src/analyze.ts index 0ac0c9a27095..6b04d43937b3 100644 --- a/extensions/logbook/src/analyze.ts +++ b/extensions/logbook/src/analyze.ts @@ -24,6 +24,9 @@ export function clockToMs(day: string, clock: string): number | null { const minutes = Number(match[2]); const seconds = Number(match[3] ?? "0"); const meridiem = match[4]?.toLowerCase(); + if (meridiem && (hours < 1 || hours > 12)) { + return null; + } if (meridiem === "pm" && hours < 12) { hours += 12; }