Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: JSON, Date, JavaScript, parsing, ISO 8601

Как преобразовать дату из JSON в Date?

Вопрос проверяет умение работать с датами в JavaScript, особенно при получении данных из JSON, что важно для корректной обработки временных меток в веб-приложениях.

Короткий ответ

JSON не имеет специального типа для дат, поэтому даты обычно передаются как строки. Для преобразования строки в объект Date в JavaScript используется конструктор new Date(). Наиболее надёжный формат — строка в стандарте ISO 8601 (например, "2024-12-31T23:59:59.999Z"), который конструктор Date понимает напрямую. Если дата передана в другом формате, может потребоваться ручной разбор строки или использование библиотек, таких как date-fns или moment.js.

Длинный ответ

При работе с JSON в JavaScript важно понимать, что формат JSON поддерживает ограниченный набор типов данных: строки, числа, булевы значения, null, массивы и объекты. Специального типа для дат не существует. Поэтому, когда сервер отправляет дату, она сериализуется в строку (реже — в число, представляющее timestamp). Задача клиента — корректно преобразовать эту строку обратно в объект Date, с которым можно удобно работать.

Стандартный подход: конструктор Date

Самый простой способ — передать строку напрямую в конструктор new Date(). JavaScript умеет парсить строки в формате ISO 8601, который является международным стандартом для представления даты и времени. Этот формат часто используется по умолчанию в многих API и базах данных.

// Пример: дата из JSON в формате ISO строки
const jsonString = '{"eventDate":"2024-05-15T14:30:00.000Z"}';
const data = JSON.parse(jsonString);

// Преобразование строки в объект Date
const dateObj = new Date(data.eventDate);
console.log(dateObj); // Вывод: Wed May 15 2024 17:30:00 GMT+0300 (Москва, стандартное время)
console.log(dateObj.getFullYear()); // 2024

Работа с числовым timestamp

Иногда дата передаётся как число — количество миллисекунд, прошедших с 1 января 1970 года (Unix timestamp в миллисекундах). В этом случае конструктор Date также принимает число.

// Пример: timestamp из JSON
const jsonWithTimestamp = '{"createdAt": 1715779800000}';
const data2 = JSON.parse(jsonWithTimestamp);
const dateFromTimestamp = new Date(data2.createdAt);
console.log(dateFromTimestamp.toISOString()); // "2024-05-15T14:30:00.000Z"

Потенциальные проблемы и их решение

Не все строковые форматы дат парсятся одинаково хорошо в разных браузерах. Форматы вроде "15/05/2024" могут интерпретироваться неправильно. Рекомендуется:

  • Договориться с бэкендом об использовании ISO 8601.
  • Использовать библиотеки для сложных форматов (например, date-fns, moment.js).
  • Вручную разбирать строку, если формат известен и фиксирован.
// Ручной парсинг для формата "DD/MM/YYYY"
function parseCustomDate(dateStr) {
  const [day, month, year] = dateStr.split('/').map(Number);
  // Месяцы в Date начинаются с 0
  return new Date(year, month - 1, day);
}
const customDate = parseCustomDate("15/05/2024");
console.log(customDate.toDateString()); // Wed May 15 2024

Где это применяется?

Преобразование даты из JSON необходимо практически в любом веб-приложении, которое получает данные с сервера: отображение времени публикации поста, фильтрация событий в календаре, построение графиков с временными рядами. Правильная обработка гарантирует, что даты будут корректно отображаться в локальном часовом поясе пользователя.

Вывод: Используйте new Date() для строк в формате ISO 8601 или числовых timestamp. Для нестандартных форматов предпочтительнее использовать проверенные библиотеки или явный парсинг, чтобы избежать проблем с кросс-браузерностью и часовыми поясами.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#JSON

#Date

#JavaScript

#parsing

#ISO 8601

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.