首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用js (或moment.js)检查日期是否超过当前日期?

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

Stack Overflow用户
提问于 2018-09-28 01:26:31
回答 3查看 132关注 0票数 0

因此,现在我只想从para类中获取日期,并将其打印到控制台。Jquery和moment都运行得很好。现在,此命令不会将任何内容记录到控制台。我需要查看当前日期是否为任何具有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,它可以工作,但数学错误。"date:“”09/18/2018“”天数与今天:“”284“”日期:“”09/12/1999“”天数与今天:“-6837

EN

回答 3

Stack Overflow用户

发布于 2018-09-28 02:45:46

编辑:

下面的代码从html获取日期文本,将其解析为月、日和年,然后将其转换为js date对象,以便与当前日期进行比较。输出的日期差值从毫秒转换为天数。

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

原始(在删除moment.js代码并将html添加到问题中的编辑之前):

您可以使用vanilla js解析html中的日期文本并将其转换为js date对象,从而获得以天为单位的日期差,这样您就可以进行一些数学运算,将毫秒差转换为天数(在下面的示例中四舍五入为整日)。

下面示例中的dates数组是您将从html中选择的日期元素集合的占位符(如果您正在使用tablep元素,从您的问题/评论中不能确定)。用于演示的工作代码片段:

const dates = ['05/23/2021', '12/19/1999'];
for (const date of dates) {
  const [m, d, y] = date.split('/');
  const dt = new Date(y, m - 1, d);
  const diff = Math.floor((dt - new Date()) / (86400 * 1000));
  console.log('date:', date, 'days diff vs today:', diff);
}

票数 1
EN

Stack Overflow用户

发布于 2018-09-28 01:36:10

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> 
票数 0
EN

Stack Overflow用户

发布于 2018-09-28 05:10:12

您可以使用moment.diff函数。请遵循这些docs for moment difference,以便更好地理解。

示例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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52542224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档