Проверьте, если время больше, чем определенное время в день

#javascript #momentjs

#javascript #momentjs

Вопрос:

Вероятно, спрашивал раньше, но не могу найти ответ на это. Как мне проверять, превышает ли время 17:30 каждый день?

Мой случай заключается в том, что мне нужно будет проверить, превышает ли текущее время 17:30 с понедельника по пятницу, и если сегодня суббота, я должен проверить, превышает ли время 15:30.

Я предпочитаю использовать Moment.js .

Комментарии:

1. «Я предпочитаю использовать Moment.js .» ?

2. Почему вы изменили принятый ответ?

3. Я просмотрел эти ответы, и я действительно упоминаю Moment.js в качестве предпочтительного способа решения этой проблемы. Так что это более точный ответ на этот вопрос. В вашем ответе нет ничего плохого, но я думаю, что использование moment.js последняя функция — это более чистый способ решить эту проблему (по крайней мере, ее легче читать).

Ответ №1:

Вот пример с moment.js

 function check() {
  var now = moment();
  var hourToCheck = (now.day() !== 0)?17:15;
  var dateToCheck = now.hour(hourToCheck).minute(30);
  
  return moment().isAfter(dateToCheck);
}

console.log(check())  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>  

Комментарии:

1. Я не голосовал против, и ваш подход разумный, но я думаю, что вы пропустили несколько вещей.

Ответ №2:

Вы можете просто проверить время, используя Date() . Серьезно, вам не нужен большой плагин для этого:

 var curTime = new Date();
var day = curTime.getDay();
curTime = parseInt(curTime.getHours()   ""   ("0"   curTime.getMinutes()).substr(-2)   ""   ("0"   curTime.getSeconds()).substr(-2));

if ((curTime > 173000 amp;amp; day > 0 amp;amp; day < 6) || (curTime > 153000 amp;amp; day <= 0 amp;amp; day >= 6))
  console.log("It's a good time!");
else
  console.log("It's not a good time!");  

Дайте мне знать, если есть случай, это не удается!

Комментарии:

1. Вы забыли обнулить

2. @MattJohnson Ты меня понял! :) Обновлено.

3. Лично я бы предпочел использовать множители единиц измерения и сохранить все числовые значения, но тогда, конечно, ваши значения сравнения будут выражены в общих секундах. Другим подходом было бы просто сравнивать элементы по отдельности, как вы делаете с day .

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

Ответ №3:

Просто чтобы дать другой подход, используя moment.js:

 var now = moment();
var day = now.day();
var today1730 = moment('17:30','HH:mm');
var today1530 = moment('15:30','HH:mm');
var ok = day > 0 amp;amp; day < 7 ? now.isSameOrAfter(today1730) : now.isSameOrAfter(today1530);

if (ok) { ... }
  

Комментарии:

1. я использовал это, и это помогло, но я сделал следующее: time1 = moment(outTime,’ЧЧ: мм’); const time2 = moment(inTime,’ЧЧ: мм’); возвращает time1.isSameOrAfter(time2);