Загрузка...

Даты в JavaScript

Настенный календарь и объект спорят о марте ещё до первой строки кода. Для тебя март третий. Объект, если январь у него нулевой, держит март двойкой. Чтобы спор не расползался на «сейчас» с часов компьютера, оставляем одно утро: читальный зал открылся в четверг 14 марта 2024 года в 9:30.

Это не поиск по списку

В массиве ответом была ячейка, −1, да или нет, или сама марка. Дату так не находят. Ты собираешь момент и задаёшь ему один вопрос. Вопрос стрелку не двигает.

Шесть чисел именно этого утра

На листке — число этого четверга и сосед, с которым его путают.

📊 Листок этого четверга

Метод О чём ты спрашиваешь Число этого утра С чем это путают
getFullYear год целиком 2024 с записью 24
getMonth где в объекте сидит март 2 с тройкой настенного календаря
getDate какое число месяца 14 с номером четверга
getDay где четверг в неделе 4 с числом 14
getHours час суток от 0 до 23 9 с отдельной пометкой «утро»
getMinutes минута 30 с просьбой достать 30 из часа

Январь 0, февраль 1, март 2. Воскресенье 0, понедельник 1, вторник 2, среда 3, четверг 4. Ноль из массива был первой ячейкой. Эти нули открывают год и неделю.

Сначала год, месяц не трогаем

Наружу выходит только то, что стояло первым: 2024, целиком. День, час и минута этой строке не нужны.

Год этого четверга

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getFullYear());

Видишь 2024, потому что его и поставили первым. Двойка месяца в этой строке не печатается, но с момента сборки она уже значит март. 24 — это сокращение на бумаге, не эта проверка.

Март внутри объекта

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getMonth());

Двойка на месте, и это уже март, а не недосчитанный месяц. Январь забрал ноль. Единицу припишешь позже, во фразе для человека. Сейчас число не трогай.

Четырнадцатое и четверг

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getDate());
console.log(opened.getDay());

14 — число месяца, 4 — четверг, если воскресенье нулевое. Строки идут подряд, потому что ты спросил оба раза. Это не один вопрос. Перепутать методы — прочитать дату и решить, что это имя дня, или наоборот.

Девять тридцать

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getHours());
console.log(opened.getMinutes());

Сначала 9, потом 30. Часы идут от 0 в полночь до 23, поэтому эта 9 — утро и отдельная пометка ей не нужна. 30 — минута. Просить её у часа значит смотреть не на ту стрелку.

Визит двадцатого

javascript
let opened = new Date(2024, 2, 14, 9, 30);
let visit = new Date(2024, 2, 20, 15, 0);
console.log(visit.getTime() > opened.getTime());
console.log(visit.getDate());

Визит — 20 марта в 15:00, то есть позже открытия. getTime превращает каждый момент в число, по которому видно, кто раньше. Сравнение даёт true. Следующая строка — 20, день этого визита. === про раньше и позже не спрашивает. Он спрашивает, смотрят ли оба имени на один объект. Здесь объекта два.

Фраза для того, кто код не видит

Год и число берёшь как есть. Месяц пишешь так, как его считает настенный календарь.

Строка для читающего

html
<!DOCTYPE html>
<html>
<head>
<title>dates — page</title>
</head>
<body>
<p id="when">…</p>
<script>
let opened = new Date(2024, 2, 14, 9, 30);
let year = opened.getFullYear();
let displayMonth = opened.getMonth() + 1;
let day = opened.getDate();
let box = document.getElementById("when");
box.textContent = year + "-" + displayMonth + "-" + day;
</script>
</body>
</html>

В абзаце стоит 2024-3-14. Спросишь объект про месяц ещё раз — там по-прежнему 2. Сдвинутое число живёт во фразе для глаза. Сохранённое утро не сдвинулось.

Шесть мест, где это утро должно сойтись

Сверяй, не угадывай.

  1. Год целиком — 2024, не 24
  2. Внутри объекта март — это 2
  3. 14 даёт getDate, а 4 для четверга даёт getDay
  4. Час — 9, минута — 30
  5. Визит двадцатого позже, сравнение — true, день визита — 20
  6. Фраза абзаца — 2024-3-14, а объект держит месяц как 2

Программа идёт, день не тот

Сообщения об ошибке нет. Меняется только месяц или число, которое ты думал прочитать.

  • Передаёшь в new Date тройку, имея в виду март, и собираешь апрель
  • Читаешь 2 как февраль или требуешь от getMonth тройку
  • Просишь 14 у getDay
  • Просишь четвёрку четверга у getDate
  • Решаешь, какой момент позже, через ===
  • Вызываешь new Date() без чисел, и каждое обновление страницы ставит другое утро

Что должно остаться, когда закроешь страницу

  • Март — это 2, потому что январь — 0
  • Число месяца даёт getDate
  • День недели даёт getDay, воскресенье — 0
  • Два момента упорядочивают числом из getTime
  • Фраза для человека пишет месяц на шаг дальше, чем лежит в объекте, а объект остаётся на 2
  • Дальше — объект Math

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
8
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху