Переменная не преобразуется в Дату
Суть скрипта получить текущую дату и время, и сравнить с датой и временем из блока.
const now = new Date();
$('.list-item').each(function() {
const dateStr = $(this).find('.date').text().trim();
if (dateStr) {
const date = new Date(dateStr);
console.log(date);
if (date > now) {
$(this).find('.test').text('Будущее');
} else {
$(this).find('.test').text('Прошлое');
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-item">
<div class="date">28.02.2023 13:40:00</div>
<div class="test"></div>
<div class="item ">
</div>
</div>
Всегда выполняется else, пытаюсь вывести переменную в консоль console.log(date); Выдает "Invalid Date" Подскажите, в чем может быть проблема?
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
Подскажите, в чем может быть проблема?
Не всякий формат строки можно преобразовать в дату... https://learn.javascript.ru/date#razbor-stroki-s-datoy
Перед преобразованием переделаем строку под другой формат YYYY-MM-DDTHH:mm:ss.sssZ.
const now = new Date();
$('.list-item').each(function() {
const dateStr = $(this).find('.date').text().trim();
if (dateStr) {
let date = dateStr.replace(/(\d+)\.(\d+)\.(\d+)\s/, '$3-$2-$1T');
date = new Date(date);
console.log(date, typeof date);
if (date > now) {
$(this).find('.test').text('Будущее');
} else {
$(this).find('.test').text('Прошлое');
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-item">
<div class="date">28.02.2023 13:40:00</div>
<div class="test"></div>
<div class="item ">
</div>
</div>