Найдите разницу во времени с помощью машинописного текста времени начала и окончания

Сейчас я работаю над напоминанием о перерыве. Пользователи смогут установить время начала и окончания, которое я буду сравнивать с текущим временем, чтобы определить, когда запускать уведомление о перерыве.

const currentDate = new Date();
let startTime = "09:00:00";
let endTime = "17:00:00";
const startTimeSplit = startTime.split(":");
const endTimeSplit = endTime.split(":");

const startDate = new Date();
startDate.setHours(parseInt(startTimeSplit[0], 10));
startDate.setMinutes(parseInt(startTimeSplit[1], 10));
startDate.setSeconds(0);

const endDate = new Date();
endDate.setDate(startDate.getDate() + 1)
endDate.setHours(parseInt(endTimeSplit[0], 10));
endDate.setMinutes(parseInt(endTimeSplit[1], 10));
endDate.setSeconds(0);

if (startDate <= currentDate && endDate > currentDate && this.checkNonBreakTime()) {
  const timeDelta = (currentDate.getTime() - startDate.getTime()) / 60000;
  if (timeDelta % frequency === 0) {
    this.createNotification();
  }
}

Переменные времени начала и окончания берутся из базы данных в зависимости от предпочтений агентов.

Проблема здесь в том, что если время окончания потенциально наступает на следующий день, мой код ломается.

Кто-нибудь раньше создавал подобное приложение для напоминаний и есть идея, как я могу сравнить 3 даты?

Привет, добро пожаловать в Stack Overflow! Почему ваш код ломается, если время окончания наступает на следующий день? Можете ли вы добавить пример входных данных, которые ломают ваш код, и конкретно указать, что ломается?

y2bd 30.03.2021 02:05

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

Phil 30.03.2021 02:06

Совет: вы можете установить часы, минуты, секунды и миллисекунды за один раз, и вам не нужно использовать parseInt. Например. startDate.setHours(startTimeSplit[0], startTimeSplit[1], 0, 0). :-) Также рассмотрите let [h,m,s] = startTime.split(":")

RobG 30.03.2021 03:41

@ y2bd код прерывается, когда currentDate переключается на следующий день. startDate = new Date () также будет переключаться, поскольку я заменяю только значения времени временем из базы данных

matthdan003 30.03.2021 07:15

@Phil, который работает до тех пор, пока currentDate не переключится на следующий день. Добавление дня приведет к тому, что endDate будет на целый день раньше currentDate.

matthdan003 30.03.2021 07:17

@RobG понял. Спасибо!

matthdan003 30.03.2021 07:17
Поведение ключевого слова "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) для оценки ваших знаний,...
0
6
38
0

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