我在本机javascript或jquery中混淆了日期比较,有人可以指出我如何快速与ISO-8601格式的今天日期进行比较
答案 0 :(得分:3)
试试这个
var d1 = new Date('2013-08-02T10:09:08Z'), // 10:09 to
d2 = new Date('2013-08-02T10:20:08Z'); // 10:20 is 11 mins
//Get the difference
var diff = d2 - d1;
//Format this as desired.
if (diff > 60e3) console.log(
Math.floor(diff / 60e3), 'minutes ago'
);
else console.log(
Math.floor(diff / 1e3), 'seconds ago'
);
// 11 minutes ago
OR
alert((dateFromISO8601("2013-08-02T10:20:08Z") - dateFromISO8601("2013-08-02T10:09:08Z")) / 60000); //Response in Milisecnds so Divide by 60000 For Minutes
function dateFromISO8601(isostr) {
var parts = isostr.match(/\d+/g);
return new Date(parts[0], parts[1] - 1, parts[2], parts[3], parts[4], parts[5]);
}
答案 1 :(得分:0)
您可以在javascript中使用新的Date()方法来比较两个日期。这里是比较两个日期的代码。
var date1 = "28/08/2008";
var date2 = "12/02/2014";
if(new Date(date1) > new Date(date2)){
alert("Date 1 is greater then Date 2");
}else{
alert("Date 2 is greater than Date 1");
}
答案 2 :(得分:0)
不要使用Date构造函数来解析字符串,因为浏览器的结果不一致。手动解析字符串。
如果你有像2014-08-05T01:28:48.909Z这样的ISO 8601格式,它很容易解析:
// Given an ISO 8601 string, return a date object
function parseISO(s) {
s = s.split(/\D/);
return new Date(Date.UTC(s[0],--s[1],s[2],s[3],s[4],s[5],s[6]));
}
现在您可以比较日期,如:
var d0 = '2014-02-06T23:45:15.987Z';
var d1 = '2014-02-06T23:48:15.987Z';
if (parseISO(d0) < parseISO(d1)) {
// d0 is before d1
}
答案 3 :(得分:0)
您可以对两个有效的 ISO8601
字符串(即 new Date().toISOString()
)进行字符串比较,它会起作用
"2021-07-02T21:50:01.926Z" > "2021-07-04T21:49:56.863Z" // false