39 lines
938 B
TypeScript
39 lines
938 B
TypeScript
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;
|
|
}
|