Как сравнивать даты в Javascript?

У меня такая ситуация:

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

Для этого я делаю для каждого запуска цикла:

LastTimeIDidTheLoop = new Date();

А в другой функции, которая проходит через SetInterval каждые 30 секунд, я хочу сделать в основном следующее:

if (LastTimeIDidTheLoop is more than 30 seconds ago) {
  alert("oops");
}

Как мне это сделать?

Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
1 600
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

как насчет:

newDate = new Date()
newDate.setSeconds(newDate.getSeconds()-30);
if (newDate > LastTimeIDidTheLoop) {
  alert("oops");
}

Это просто объединяет 30 в конец, например "Sun 07 Dec 2008 16:45:19 GMT-0500 (EST) 30"

defeated 08.12.2008 00:46

Да, ты прав! Я исправил это, добавив исправленную версию.

rob 08.12.2008 00:50

Создайте объект даты и используйте setSeconds ().

controlDate = new Date();
controlDate.setSeconds(controlDate.getSeconds() + 30);

if (LastTimeIDidTheLoop > controlDate) {
...

Это не работает, он просто устанавливает время на 30 секунд, например «1:15:30». Вы хотите добавить 30 секунд, вы делаете controlDate.setSeconds (controlDate.getSeconds () + 30);

defeated 08.12.2008 01:04

Объекты даты JS хранят миллисекунды внутри себя, вычитание их друг из друга работает должным образом:

var diffSeconds = (new Date() - LastTimeIDidTheLoop) / 1000; 
if (diffSeconds > 30)
{
  // ...
}

Сделать можно так:

var dateDiff = function(fromdate, todate) {
    var diff = todate - fromdate;
    return Math.floor(diff/1000);
}

тогда:

if (dateDiff(fromdate, todate) > 30){
    alert("oops");
}

Другие вопросы по теме