d5d7d2e2aa
Le champ Date des blocs de pesée passe de MalioDate (date seule, heure perdue -> 00:00:00 en base) à MalioDateTime (date + heure). Défaut = instant courant (nowIsoDateTime) et ré-horodatage à la validation d'une pesée (bascule ou manuelle) via applyReading : la date du ticket reflète le moment réel de la pesée. L'hydratation en modification conserve l'heure du back (TIMESTAMP).
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
/**
|
|
* Helpers de date purs / testables (partages inter-modules).
|
|
*/
|
|
|
|
/**
|
|
* Date du jour au format ISO `YYYY-MM-DD` en heure LOCALE.
|
|
*
|
|
* On NE passe PAS par `toISOString()` (UTC) : pres de minuit, le decalage de
|
|
* fuseau (FR = UTC+1/+2) renverrait la veille ou le lendemain. On lit donc les
|
|
* composantes locales. Parametre `now` injectable pour les tests.
|
|
*/
|
|
export function todayIso(now: Date = new Date()): string {
|
|
const year = now.getFullYear()
|
|
const month = String(now.getMonth() + 1).padStart(2, '0')
|
|
const day = String(now.getDate()).padStart(2, '0')
|
|
return `${year}-${month}-${day}`
|
|
}
|
|
|
|
/**
|
|
* Date-heure courante au format ISO LOCAL `YYYY-MM-DDTHH:mm:ss` (sans fuseau).
|
|
*
|
|
* C'est le format attendu par `MalioDateTime` (secondes incluses, pas d'offset
|
|
* horaire). Comme `todayIso`, on lit les composantes LOCALES (jamais
|
|
* `toISOString()`/UTC) pour ne pas décaler l'heure réelle. Paramètre `now`
|
|
* injectable pour les tests.
|
|
*/
|
|
export function nowIsoDateTime(now: Date = new Date()): string {
|
|
const hours = String(now.getHours()).padStart(2, '0')
|
|
const minutes = String(now.getMinutes()).padStart(2, '0')
|
|
const seconds = String(now.getSeconds()).padStart(2, '0')
|
|
return `${todayIso(now)}T${hours}:${minutes}:${seconds}`
|
|
}
|