如何使用js(或moment.js)检查日期是否超过当前日期?

时间:2018-09-27 17:26:31

标签: javascript jquery date momentjs

所以现在我只是想从para类中获取日期以打印到控制台。 jQuery和时刻都工作正常。现在,这什么都不会记录到控制台。我需要查看当前日期是否是带有para类的任何日期之后的x天。在这一点上,我很高兴只将课程日期记录到控制台。

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>

更新:在代码笔(而不是chrome)中进行了尝试,它可以工作,但是数学错误。  “日期:”“       2018/9/18     ”“ day diff vs今天:” 284 “日期:”“       1999/09/12     ““与今天的差异天:” -6837

3 个答案:

答案 0 :(得分:1)

编辑:

以下内容从您的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添加到问题的编辑之前):

您可以通过解析html中的日期文本并将其转换为js日期对象来使用香草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);
}

答案 1 :(得分:0)

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> 

答案 2 :(得分:0)

您可以使用$cookieStore.put("language", "pt-PT", {domain: 'requestdomain.com'})功能。请遵循这些docs for moment difference,以获取更好的理解。

示例JS:

moment.diff