/** 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) : '';
}
