Способ проверки сегодняшней даты в JavaScript через метод toDateString()
При разработке интерфейсов иногда бывает удобно выводить не просто дату в виде числа месяца и года, а дату в виде слова «сегодня«.
Для пользователя такая информация может оказаться более удобной, чтобы понимать какие операции выполнились сегодняшним днём.
Мы воспользуемся командой получения текущей даты с точностью до миллисекунд:
Date.now()
Предположим, что мы получили число:
1701336526260
В этом целом числе указаны все необходимые нам данные для проверки его на «сегодня«.
Всё что нам нужно сделать — это вытащить из данного числа дату с округлением до дня. В этом нам поможет метод:
toDateString()
Мы будем вызывать его на экземплярах объектов типа Date (на объектах Датах). Метод будет возвращать нам строку вида:
'Thu Nov 30 2023'
Результаты сравнений. Сначала мы создаём дату, а потом получаем её строковый вид без времени. В правой части увеличивается время в каждой дате:
new Date(Date.now()).toDateString() == new Date(1701336000000).toDateString() true new Date(Date.now()).toDateString() == new Date(1701376000000).toDateString() true new Date(Date.now()).toDateString() == new Date(1701386000000).toDateString() false
Способ проверки сегодняшней даты в JavaScript через методы toString() и slice(0,15)
Мы можем сначала получить полное строковое представление даты в человеко-понятном формате и после этого обрезать лишние данные, которые имеют отношения ко времени.
new Date(1701336526260).toString().slice(0,15) 'Thu Nov 30 2023'
Нам нужно оставить только 15 символов от строки.
Важно то, что сокращения имён дней недели, а также имён месяцев всегда имеют по 3 символа. Номер для месяца всегда состоит из 2 символов, а номер года из 4 символов. Это прописано в стандарте ECMAScript по которому работает JavaScript.
let date1 = new Date(1701336526260); let date2 = new Date(1701376000000); let date3 = new Date(1701386000000); new Date(Date.now()).toString().slice(0,15) == date1.toString().slice(0,15) true new Date(Date.now()).toString().slice(0,15) == date2.toString().slice(0,15) true new Date(Date.now()).toString().slice(0,15) == date3.toString().slice(0,15) false