Как я могу использовать js (или moment.js), чтобы проверить, прошла ли дата за текущей? - PullRequest
0 голосов
/ 27 сентября 2018

Так что теперь я просто пытаюсь получить даты из класса para для вывода на консоль.Jquery и момент оба работают нормально.Прямо сейчас это ничего не записывает на консоль.Мне нужно посмотреть, если текущая дата составляет х дней после любой из дат с классом пункт.На этом этапе я был бы рад просто записать даты занятий в консоль.

js

        const dates = $('.para');

        dates.each((i, elem) => {
         let parts = $(elem).text().split('/');
           let dt = new Date(parts[2] ,parts[1], parts[0]).getTime();
           let diff = Math.floor((dt - new Date().getTime()) / (86400 * 
         1000));
       console.log('date:', $(elem).text(), 'days diff vs today:', diff);
      });

html

    <!DOCTYPE html>
      <html lang="en" dir="ltr">
       <head>
     <meta charset="utf-8">
         <title></title>
     <script src="moment.js"></script>

       <script 
      src="https://cdnjs.cloudflare.com/
  ajax/libs/jquery/3.3.1/jquery.slim.min.js" integrity="sha256- 
   3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E=" crossorigin="anonymous"> 
   </script>
   <script src="forrealz.js"></script>



        </head>
      <body>

     <p class="para">
    11/18/2021
      </p>
    <p class="para">
  09/12/1999
     </p>

  </body>
  </html>

Обновление: пробовал в коде перавместо хрома и работает но математика ошибочна."date:" "18.09.2008"

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

РЕДАКТИРОВАТЬ:

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

const dates = $('.para');

dates.each((i, elem) => {
  let [m, d, y] = $(elem).text().split('/');
  let dt = new Date(y, m - 1, d);
  let diff = Math.floor((dt - new Date()) / (86400 * 1000));
  console.log('date:', $(elem).text(), 'days diff vs today:', diff);
});
<p class="para">05/23/2021</p>
<p class="para">12/19/1999</p>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

ОРИГИНАЛ (до того, как отредактировал, что удалил код moment.js и добавил html к вопросу):

Вы можете получить разницу в датедней с использованием vanilla js путем анализа текста даты из html и преобразования в объекты даты js, чтобы вы могли немного поработать, чтобы преобразовать разницу в миллисекундах в дни (с округлением до целых дней в приведенном ниже примере).

Массив dates в приведенном ниже примере является заполнителем для коллекции элементов даты, которые вы выбрали бы в своем html (не было уверенности в ваших вопросах / комментариях, если вы работаете с элементами table или p),Рабочий фрагмент для иллюстрации:

const dates = ['05/23/2021', '12/19/1999'];

for (let date of dates) {
  let [m, d, y] = date.split('/');
  let dt = new Date(y, m - 1, d);
  let diff = Math.floor((dt - new Date()) / (86400 * 1000));
  console.log('date:', date, 'days diff vs today:', diff);
}
0 голосов
/ 28 сентября 2018

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

Образец JS:

let d = moment(inputDate, 'M/D/YYYY');

if ( d.isValid() ) {
    let differenceInDays = moment().diff(d, 'days', true);  // moment() gives current date time.

    if (differenceInDays > 0) {
        console.log("Past current Date");
    }

}
0 голосов
/ 27 сентября 2018

Momentjs diff является ключевой функцией здесь:

var dayDifference = 10;

var d = new Date();
var momentDate = moment(d);

$('p.para').each(function (index, element) {
    var date = moment($(this).text().trim(), 'M/D/YYYY');
    if (momentDate.diff(date, 'days') < dayDifference) {
        // display alert
    }
}

Это может быть применено к предоставленному вами HTML-примеру:

<p class="para"> 23/05/2021 </p>
<p class="para"> 19/12/1999 </p> 
...