35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
/**
|
|
* 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,
|
|
};
|