原生javascript中的ISO日期比较

时间:2014-08-23 04:56:37

标签: javascript jquery

我在本机javascript或jquery中混淆了日期比较,有人可以指出我如何快速与ISO-8601格式的今天日期进行比较

4 个答案:

答案 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