Преобразование дат в формат ISO с учетом часового пояса

JavaScriptJavaScriptBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы научимся преобразовывать дату в расширенный формат ISO (ISO 8601), включая смещение часового пояса. Мы будем использовать метод Date.prototype.getTimezoneOffset() для получения смещения часового пояса и его обратного преобразования. Затем мы определим вспомогательную функцию для нормализации любого переданного числа в целое и дополнения его до двух цифр с использованием String.prototype.padStart(). Наконец, мы будем использовать встроенные методы в прототипе Date для построения строки ISO 8601 с смещением часового пояса. В конце этого практического занятия вы будете лучше понимать, как манипулировать датами в JavaScript.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/AdvancedConceptsGroup -.-> javascript/template_lit("Template Literals") subgraph Lab Skills javascript/variables -.-> lab-28451{{"Преобразование дат в формат ISO с учетом часового пояса"}} javascript/data_types -.-> lab-28451{{"Преобразование дат в формат ISO с учетом часового пояса"}} javascript/arith_ops -.-> lab-28451{{"Преобразование дат в формат ISO с учетом часового пояса"}} javascript/comp_ops -.-> lab-28451{{"Преобразование дат в формат ISO с учетом часового пояса"}} javascript/template_lit -.-> lab-28451{{"Преобразование дат в формат ISO с учетом часового пояса"}} end

Преобразование дат в формат ISO с учетом часового пояса

Для преобразования даты в расширенный формат ISO (ISO 8601), включая смещение часового пояса, следуйте шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать программирование.
  2. Используйте Date.prototype.getTimezoneOffset(), чтобы получить смещение часового пояса и перевернуть его. Сохраните его знак в diff.
  3. Определите вспомогательную функцию pad(), которая нормализует любое переданное число до целого с использованием Math.floor() и Math.abs() и дополняет его до 2 цифр с использованием String.prototype.padStart().
  4. Используйте 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, чтобы улучшить свои навыки.