Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнить дату с сегодняшней (https://javascript.ru/forum/misc/73196-sravnit-datu-s-segodnyashnejj.html)

saldek 28.03.2018 23:40

О да! Великолепно
 
Теперь и хром и файрфокс показывает всё в цвете абсолютно одинаково! А вот сравнивать детально почему буду уже с утра. Спасибо.

j0hnik 29.03.2018 03:25

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <span>29.03.2018</span><br>
  <span>30.03.2018</span><br>
  <span>31.03.2018</span><br>
  <span>01.04.2018</span><br>
  <span>02.04.2018</span><br>
  <span>03.04.2018</span><br>
  <span>04.04.2018</span><br>
  <script>
    var now = Date.now(),
    color = ['#F00','#F70','#D90','#AA0','#5D0','#0F0'];
    [].forEach.call(document.querySelectorAll('span'), function(el){
      date = Date.parse(el.textContent.replace(/(\d+)\.(\d+)\.(\d+)/, '$2/$1/$3'));
      var ost = (date - now)/86400000|0;
      ost = ost >= 5 ? 5 : ost<0 ? 0 : ost;
      el.style.color = color[ost];
    });
  </script>
</body>
</html>


поправил чутка для практичности

laimas 29.03.2018 04:49

Цитата:

Сообщение от рони
'$2-$1-$3' так надёжнее!

А разве в JS форматы YYYY-mm-dd и YYYY/mm/dd не разные данные возвращают, имеется ввиду Date.parse()?

рони 29.03.2018 08:28

laimas,
ранее было только так "месяц/день/год", сейчас многое зависит от настроек браузера или toLocaleString.
old
https://javascript.ru/Date.parse
new
https://learn.javascript.ru/datetime...и-date-parse

запустите пост №2 в ie

saldek 29.03.2018 08:29

Спасибо j0hnik. Но ваш первый пример для меня более понятен, легче его изменять. В этом примере явно моих знаний пока не достаточно

laimas 29.03.2018 09:40

Цитата:

Сообщение от рони
ранее было только так "месяц/день/год", сейчас многое зависит от настроек браузера

Вот, и разница то может быть приличной. Это я спросил только потому, что о "надежнее" речь была. )

рони 29.03.2018 09:46

Цитата:

Сообщение от laimas
Это я спросил только потому, что о "надежнее" речь была.

и в чём ненадёжность если метод кросбраузерный, работает везде от старых Safari и ie до новых Firefox и Google Chrome?

saldek 29.03.2018 10:02

Доброе утро. Как правильно игнорировать год при сравнении с текущей датой? К примеру дата в формате 08 июнь 1969 сравнивается с текущей только по дню месяца и месяцу, год - игнорируется.
Заранее благодарю.

Dilettante_Pro 29.03.2018 10:10

А можно и без регулярок и parse
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <span>29.03.2018</span><br>
  <span>30.03.2018</span><br>
  <span>31.03.2018</span><br>
  <span>01.04.2018</span><br>
  <span>02.04.2018</span><br>
  <span>03.04.2018</span><br>
  <span>04.04.2018</span><br>
  <script>
    var now = Date.now(),
    color = ['#F00','#F70','#D90','#AA0','#5D0','#0F0'];
    [].forEach.call(document.querySelectorAll('span'), function(el){
       var comp = el.textContent.split('.');
      date = new Date(comp[2],comp[1] - 1,comp[0]);
      var ost = (date - now)/86400000|0;
      ost = ost >= 5 ? 5 : ost<0 ? 0 : ost;
      el.style.color = color[ost];
    });
  </script>
</body>
</html>

Dilettante_Pro 29.03.2018 10:14

saldek,
Можно сравнивать по компонентам даты - getDate, getMonth, getFullYear


Часовой пояс GMT +3, время: 08:23.