Урок 9: Работа с датами
Работа с датами является важной частью многих приложений. JavaScript предоставляет встроенный объект Date
для работы с датами и временем. В этом уроке мы рассмотрим, как создавать и манипулировать объектами Date
, а также основные методы для работы с датами.
Обзор объекта Date
Объект Date
в JavaScript представляет собой дату и время. Вы можете создать объект Date
различными способами.
// Создание текущей даты и времени
let now = new Date();
console.log(now);
// Tue May 17 2024 15:24:30 GMT+0000 (Coordinated Universal Time)
// Создание даты с указанием года, месяца, дня, часа, минуты, секунды и миллисекунды
let specificDate = new Date(2024, 4, 17, 15, 24, 30, 0);
console.log(specificDate);
// Fri May 17 2024 15:24:30 GMT+0000 (Coordinated Universal Time)
Месяцы в JavaScript начинаются с 0 (январь) до 11 (декабрь), поэтому в примере выше май представлен как 4.
Основные методы работы с датами
Объект Date
предоставляет множество методов для получения и установки различных компонентов даты и времени.
Получение компонентов даты и времени
Вы можете использовать методы getFullYear
, getMonth
, getDate
, getHours
, getMinutes
, getSeconds
и getMilliseconds
для получения соответствующих компонентов даты и времени.
// Пример получения компонентов даты
let now = new Date();
console.log(now.getFullYear()); // Год
console.log(now.getMonth()); // Месяц (0-11)
console.log(now.getDate()); // День месяца (1-31)
console.log(now.getHours()); // Часы (0-23)
console.log(now.getMinutes()); // Минуты (0-59)
console.log(now.getSeconds()); // Секунды (0-59)
console.log(now.getMilliseconds()); // Миллисекунды (0-999)
// 2024
// 4
// 17
// 15
// 24
// 30
// 0
Установка компонентов даты и времени
Вы можете использовать методы setFullYear
, setMonth
, setDate
, setHours
, setMinutes
, setSeconds
и setMilliseconds
для установки соответствующих компонентов даты и времени.
// Пример установки компонентов даты
let date = new Date();
date.setFullYear(2025);
date.setMonth(6); // Июль
date.setDate(20);
date.setHours(10);
date.setMinutes(30);
date.setSeconds(15);
date.setMilliseconds(500);
console.log(date);
// Sun Jul 20 2025 10:30:15 GMT+0000 (Coordinated Universal Time)
Другие полезные методы объекта Date
Объект Date
предоставляет и другие полезные методы, такие как getTime
, toLocaleDateString
, toLocaleTimeString
и toISOString
.
// Получение временной метки
let now = new Date();
console.log(now.getTime()); // Время в миллисекундах с 1 января 1970 года
// Локализованные строковые представления даты и времени
console.log(now.toLocaleDateString()); // Локализованная дата
console.log(now.toLocaleTimeString()); // Локализованное время
// ISO строковое представление даты и времени
console.log(now.toISOString()); // ISO строка
// 1710523470000
// 5/17/2024
// 3:24:30 PM
// 2024-05-17T15:24:30.000Z
Упражнения
Упражнение 1: Определение возраста
Создайте функцию calculateAge
, которая принимает дату рождения в формате YYYY-MM-DD
и возвращает возраст. Используйте объект Date
для вычислений.
Решение:
// Функция для расчета возраста
function calculateAge(birthDate) {
let birth = new Date(birthDate);
let today = new Date();
let age = today.getFullYear() - birth.getFullYear();
let monthDiff = today.getMonth() - birth.getMonth();
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birth.getDate())) {
age--;
}
return age;
}
// Пример использования функции
console.log(calculateAge('1990-05-17')); // Возраст на текущую дату
// 34 (если текущая дата 17 мая 2024 года)
Объяснение: Мы создали функцию calculateAge
, которая принимает строку с датой рождения, создает объекты Date
для даты рождения и текущей даты, а затем вычисляет возраст с учетом месяца и дня.
Упражнение 2: Форматирование даты
Создайте функцию formatDate
, которая принимает объект Date
и возвращает строку в формате DD/MM/YYYY
. Используйте методы объекта Date
для получения компонентов даты.
Решение:
// Функция для форматирования даты
function formatDate(date) {
let day = date.getDate();
let month = date.getMonth() + 1; // Месяцы начинаются с 0
let year = date.getFullYear();
// Добавление ведущих нулей к дню и месяцу
day = day < 10 ? '0' + day : day;
month = month < 10 ? '0' + month : month;
return day + '/' + month + '/' + year;
}
// Пример использования функции
let date = new Date(2024, 4, 17); // 17 мая 2024 года
console.log(formatDate(date)); // 17/05/2024
Объяснение: Мы создали функцию formatDate
, которая принимает объект Date
и возвращает строку в формате DD/MM/YYYY
. Мы используем методы объекта Date
для получения компонентов даты и добавляем ведущие нули для дней и месяцев, состоящих из одной цифры.