/** * Ajoute un zéro devant les valeurs inférieures à 10 pour conserver le formatage. * @param {number|string} value Valeur numérique à normaliser. * @returns {string} Représentation sur deux caractères. */ function pad(value) { return String(value).padStart(2, '0'); } /** * Retourne le timestamp ISO local formatté avec offset. * @param {Date} value Date à formater (par défaut : maintenant). * @returns {string} Timestamp ISO 8601 avec fuseau horaire local. */ function formatDateTime(value = new Date()) { const year = value.getFullYear(); const month = pad(value.getMonth() + 1); const day = pad(value.getDate()); const hours = pad(value.getHours()); const minutes = pad(value.getMinutes()); const seconds = pad(value.getSeconds()); const offsetMinutes = value.getTimezoneOffset(); const sign = offsetMinutes <= 0 ? '+' : '-'; const absOffset = Math.abs(offsetMinutes); const offsetHours = pad(Math.floor(absOffset / 60)); const offsetMins = pad(absOffset % 60); return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}${sign}${offsetHours}:${offsetMins}`; } module.exports = { formatDateTime, };