Files
Webklar-Kundenbereich/server/services/unterkunft/datum.js
T
2026-10-07 13:47:41 +00:00

40 lines
1.1 KiB
JavaScript

// Datumshilfen fuer Buchungskalender: reine Funktionen auf Tagesstrings (YYYY-MM-DD), UTC-Arithmetik, keine I/O.
const TAG_RE = /^\d{4}-\d{2}-\d{2}$/
const TAG_MS = 86400000
function zuMs(tag) {
const [j, m, t] = tag.split('-').map(Number)
return Date.UTC(j, m - 1, t)
}
/** Gueltiger Kalendertag im Format YYYY-MM-DD. */
export function istTag(s) {
if (typeof s !== 'string' || !TAG_RE.test(s)) return false
const d = new Date(zuMs(s))
return d.toISOString().slice(0, 10) === s
}
/** Anzahl Naechte zwischen Anreise und Abreise. */
export function naechte(von, bis) {
return Math.round((zuMs(bis) - zuMs(von)) / TAG_MS)
}
/** Tag um n Tage verschoben. */
export function plusTage(tag, n) {
return new Date(zuMs(tag) + n * TAG_MS).toISOString().slice(0, 10)
}
/** Belegte Naechte: von inklusive, bis exklusive. */
export function tageVon(von, bis) {
const n = naechte(von, bis)
const out = []
for (let i = 0; i < n; i++) out.push(plusTage(von, i))
return out
}
/** '2026-11-12' wird '12.11.2026'. */
export function formatTag(tag) {
const [j, m, t] = tag.split('-')
return `${t}.${m}.${j}`
}