我可以在JS中比较这两个日期吗?

时间:2019-05-29 14:24:57

标签: javascript

console.log("201905300545_201905300555"  < "201905300535_201905300545")

我想知道日期的第一个范围是否大于第二个范围。

UPD:我问这个问题是因为我的同事以这种非常简单的方式比较了这些日期。仅当日期采用这种格式(YYYY-MM-DD-HH-MM-SS)时,该功能才有效,因此JS会按字母顺序对它们进行比较。

3 个答案:

答案 0 :(得分:2)

您可以将日期解析为moment,然后使用moment的{​​{1}}函数比较持续时间或日期,开始或结束或任意组合。

对于给定的用例“在第二个开始日期之前的开始日期和在第二个结束日期之前的结束日期吗?”,您的同事比较日期的方式可能是Javascript中最快的方式。

diff
let s1 = "201905300545_201905300555";
let s2 = "201905300535_201905300545";
let m = t => moment(t,"YYYYMMDDhhmm");
let rng1 = s1.split("_").map(m);
let rng2 = s2.split("_").map(m);
console.log(rng1[1].diff(rng1[0]) < rng2[1].diff(rng2[0]));

答案 1 :(得分:0)

首先,您必须获取它们代表的范围(通过减去它们):

 const range = r => {
   const [start, end] = r.split("_");
   return +end - +start;
 };

 console.log(range("201905300545_201905300555") < range("201905300535_201905300545"));

答案 2 :(得分:0)

这是仅使用JavaScript的解决方案:

let parseDate = (date => {
    let [l, year, month, day, hour, minute, ...r] = date.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/);
    return new Date(year, month-1, day, hour, minute);
});

let [d1, d2] = '201905300545_201905300555'.split('_').map(parseDate);
let [d3, d4] = '201905300535_201905300545'.split('_').map(parseDate);

console.log(d2 - d1 < d4 - d3);
相关问题