Converts a date to extended ISO format (ISO 8601), including timezone offset.
Date.prototype.getTimezoneOffset()
to get the timezone offset and reverse it. Store its sign in diff
.pad()
, that normalizes any passed number to an integer using Math.floor()
and Math.abs()
and pads it to 2
digits, using String.prototype.padStart()
.pad()
and the built-in methods in the Date
prototype to build the ISO 8601 string with timezone offset.const toISOStringWithTimezone = date => {
const tzOffset = -date.getTimezoneOffset();
const diff = tzOffset >= 0 ? '+' : '-';
const pad = n => `${Math.floor(Math.abs(n))}`.padStart(2, '0');
return date.getFullYear() +
'-' + pad(date.getMonth() + 1) +
'-' + pad(date.getDate()) +
'T' + pad(date.getHours()) +
':' + pad(date.getMinutes()) +
':' + pad(date.getSeconds()) +
diff + pad(tzOffset / 60) +
':' + pad(tzOffset % 60);
};
toISOStringWithTimezone(new Date()); // '2020-10-06T20:43:33-04:00'
JavaScript, Date
Checks if the given string is valid in the simplified extended ISO format (ISO 8601).
JavaScript, Date
Returns the ISO format of the given number of seconds.
JavaScript, Date
Returns the human-readable format of the given number of milliseconds.