因此,现在我只想从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
发布于 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中选择的日期元素集合的占位符(如果您正在使用table
或p
元素,从您的问题/评论中不能确定)。用于演示的工作代码片段:
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);
}
发布于 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>
发布于 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");
}
}
https://stackoverflow.com/questions/52542224
复制相似问题