Введение
В этом практическом занятии мы научимся преобразовывать дату в расширенный формат ISO (ISO 8601), включая смещение часового пояса. Мы будем использовать метод Date.prototype.getTimezoneOffset() для получения смещения часового пояса и его обратного преобразования. Затем мы определим вспомогательную функцию для нормализации любого переданного числа в целое и дополнения его до двух цифр с использованием String.prototype.padStart(). Наконец, мы будем использовать встроенные методы в прототипе Date для построения строки ISO 8601 с смещением часового пояса. В конце этого практического занятия вы будете лучше понимать, как манипулировать датами в JavaScript.
Преобразование дат в формат ISO с учетом часового пояса
Для преобразования даты в расширенный формат ISO (ISO 8601), включая смещение часового пояса, следуйте шагам:
- Откройте Терминал/SSH и введите
node, чтобы начать программирование. - Используйте
Date.prototype.getTimezoneOffset(), чтобы получить смещение часового пояса и перевернуть его. Сохраните его знак вdiff. - Определите вспомогательную функцию
pad(), которая нормализует любое переданное число до целого с использованиемMath.floor()иMath.abs()и дополняет его до2цифр с использованиемString.prototype.padStart(). - Используйте
pad()и встроенные методы в прототипеDate, чтобы построить строку ISO 8601 с смещением часового пояса.
Вот код, который вы можете использовать:
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() в качестве аргумента, чтобы получить дату в формате ISO с смещением часового пояса. Например:
toISOStringWithTimezone(new Date()); // '2020-10-06T20:43:33-04:00'
Резюме
Поздравляем! Вы завершили практическое занятие по преобразованию дат в формат ISO с учетом часового пояса. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.