sitegen/src/q+a/format.ts

40 lines
938 B
TypeScript
Raw Normal View History

2025-07-07 20:58:02 -07:00
const dateFormat = new Intl.DateTimeFormat("sv", {
timeZone: "EST",
year: "numeric",
month: "2-digit",
hour: "2-digit",
day: "2-digit",
minute: "2-digit",
});
// YYYY-MM-DD HH:MM
export function formatQuestionTimestamp(date: Date) {
return dateFormat.format(date);
}
// YYYY-MM-DDTHH:MM:00Z
export function formatQuestionISOTimestamp(date: Date) {
const str = dateFormat.format(date);
return `${str.slice(0, 10)}T${str.slice(11)}-05:00`;
}
// YYMMDDHHMM
export function formatQuestionId(date: Date) {
return formatQuestionTimestamp(date).replace(/[^\d]/g, "").slice(2, 12);
}
export function questionIdToTimestamp(id: string) {
if (id.length !== 10 || !/^\d+$/.test(id)) {
return null;
}
const date = new Date(
`20${id.slice(0, 2)}-${id.slice(2, 4)}-${id.slice(4, 6)} ${
id.slice(6, 8)
}:${id.slice(8, 10)}:00 EST`,
);
if (isNaN(date.getTime())) {
return null;
}
return date;
}