Метки времени и вычисления с датами
Вычисляйте разницу и смещения между датами.
«Метки времени и вычисления с датами» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 4 уроков всего.
Метки времени
Внутри дата хранится как метка времени: количество миллисекунд с начала эпохи Unix — полуночи 1 января 1970 года по времени UTC.
const d = new Date("1970-01-01T00:00:00Z")
console.log(d.getTime())Date.now
Date.now возвращает текущую метку времени в миллисекундах, не создавая объект Date, что эффективно при измерении времени.
const t = Date.now()
console.log(typeof t)
console.log(t > 0)getTime
Метод getTime возвращает дату в виде метки времени в миллисекундах, что удобно для сравнений и вычислений.
const d = new Date(2024, 0, 1)
console.log(typeof d.getTime())Сравнение дат
Сравнивайте две даты, сравнивая их метки времени. Более ранней дате соответствует меньшее число.
const a = new Date(2024, 0, 1)
const b = new Date(2024, 5, 1)
console.log(a.getTime() < b.getTime())Разница в миллисекундах
Вычитание одной даты из другой преобразует обе даты в метки времени и возвращает разницу в миллисекундах.
const a = new Date(2024, 0, 1)
const b = new Date(2024, 0, 2)
console.log(b - a)Преобразование в дни
Разделите разницу в миллисекундах на количество миллисекунд в сутках, чтобы получить разницу в днях.
const a = new Date(2024, 0, 1)
const b = new Date(2024, 0, 11)
const ms = b - a
const days = ms / (1000 * 60 * 60 * 24)
console.log(days)Добавление времени
Чтобы добавить время, преобразуйте дату в метку времени, прибавьте количество миллисекунд и создайте новую дату из результата.
const start = new Date(2024, 0, 1)
const oneDay = 1000 * 60 * 60 * 24
const next = new Date(start.getTime() + oneDay)
console.log(next.getDate())setDate для календарных вычислений
Метод setDate изменяет день месяца и при необходимости корректно переходит в следующий месяц.
const d = new Date(2024, 0, 31)
d.setDate(d.getDate() + 1)
console.log(d.getMonth())
console.log(d.getDate())Измерение прошедшего времени
Сохраните значение Date.now до и после операции, а затем вычтите их, чтобы измерить продолжительность операции в миллисекундах.
const start = Date.now()
let sum = 0
for (let i = 0; i < 1000; i++) { sum += i }
const elapsed = Date.now() - start
console.log(elapsed >= 0)Преобразование метки времени в дату
Передача числовой метки времени в конструктор Date восстанавливает исходный момент.
const ts = 1704067200000
const d = new Date(ts)
console.log(d.getUTCFullYear())Секунды и миллисекунды
Метки времени JavaScript указаны в миллисекундах, но многие API используют секунды. Умножайте или делите значение на 1000 для преобразования между этими единицами.
const seconds = 1704067200
const d = new Date(seconds * 1000)
console.log(d.getUTCFullYear())Быстрая проверка
Проверьте свои знания о метках времени.
Повторение
Повторение: даты внутри представлены метками времени в миллисекундах.
- Date.now возвращает текущую метку времени
- Вычитайте даты, чтобы получить разницу в миллисекундах
- Делите на количество миллисекунд в сутках, чтобы получить число дней
- JavaScript использует миллисекунды, а не секунды
const a = new Date(2024, 0, 1)
const b = new Date(2024, 0, 2)
console.log(b - a)Часто задаваемые вопросы
Урок «Метки времени и вычисления с датами» бесплатный?
Да — полный текст урока «Метки времени и вычисления с датами» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Метки времени и вычисления с датами»?
Вычисляйте разницу и смещения между датами. Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать JavaScript Academy?
Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Метки времени и вычисления с датами»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке JavaScript Academy?
Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание и чтение дат
- Метки времени и вычисления с датами
- Форматирование дат
- Часовые пояса и UTC