This commit is contained in:
31
website/js/datetime.js
Normal file
31
website/js/datetime.js
Normal file
@ -0,0 +1,31 @@
|
||||
/** App timezone for display (Germany: CET/CEST). */
|
||||
export const APP_TIMEZONE = 'Europe/Berlin';
|
||||
|
||||
/** YYYY-MM-DD in app timezone (date inputs, log filters, filename stamps). */
|
||||
export function berlinDateInputValue(date = new Date()) {
|
||||
return new Intl.DateTimeFormat('en-CA', { timeZone: APP_TIMEZONE }).format(date);
|
||||
}
|
||||
|
||||
/** YYYY-MM-DD HH:mm:ss in app timezone. */
|
||||
export function formatBerlinDateTime(value) {
|
||||
const d = value instanceof Date ? value : new Date(value);
|
||||
if (Number.isNaN(d.getTime())) return '';
|
||||
const parts = new Intl.DateTimeFormat('en-GB', {
|
||||
timeZone: APP_TIMEZONE,
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit',
|
||||
hour12: false,
|
||||
}).formatToParts(d);
|
||||
const get = (type) => parts.find((p) => p.type === type)?.value ?? '';
|
||||
return `${get('year')}-${get('month')}-${get('day')} ${get('hour')}:${get('minute')}:${get('second')}`;
|
||||
}
|
||||
|
||||
/** YYYY-MM-DD HH:mm in app timezone. */
|
||||
export function formatBerlinDateTimeShort(value) {
|
||||
const full = formatBerlinDateTime(value);
|
||||
return full ? full.slice(0, 16) : '';
|
||||
}
|
||||
Reference in New Issue
Block a user