• js中时间大小的比较


    今天在前台做到一个需要比较两个日期大小的地方,乍一看,发现一个比较奇怪地地方:

    var t1 = new Date(2018,1,1), t2 = new Date(2018,1,1);
    console.log(t1);
    console.log(t2);
    console.log('t1>t2:'+(t1>t2));
    console.log('t1==t2:'+(t1==t2));
    console.log('t1<t2:'+(t1<t2));
    console.log('t1>=t2:'+(t1>=t2));
    console.log('t1<=t2:'+(t1<=t2));
    // 输出结果
    Thu Feb 01 2018 00:00:00 GMT+0800 (中国标准时间)
    Thu Feb 01 2018 00:00:00 GMT+0800 (中国标准时间)
    t1>t2:falset1==t2:falset1<t2:falset1>=t2:truet1<=t2:true

    虽然我生命了两个相同值的时间变量,但是在比较大小的时候大小关系和想象中出入很大。接下来再来做一个试验:

    var o1 = new Object(), o2 = new Object();
    console.log(o1);
    console.log(o2);
    console.log('o1>o2:'+(o1>o2));
    console.log('o1==o2:'+(o1==o2));
    console.log('o1<o2:'+(o1<o2));
    console.log('o1>=o2:'+(o1>=o2));
    console.log('o1<=o2:'+(o1<=o2));
    // 输出结果
    {}
    {}
    o1>o2:false
    o1==o2:false
    o1<o2:false
    o1>=o2:true
    o1<=o2:true

    通过对比,可以发现两种方式得出的结果非常的相似。因为在JavaScript中,datetime的类型是Object。在比较的时候,比较的不是值,而是地址,使用==和===来比较Object往往不符合预期,除非他们是来自于同一个Object,比较datetime可以先转化为String或int。

    +t1 == +t2    // true
  • 相关阅读:
    优先队列总结
    CodeForces 567D One-Dimensional Battle Ships
    CodeForces 567D One-Dimensional Battle Ships
    codeforces 1016B. Segment Occurrences
    codeforces 1016B. Segment Occurrences
    poj3249(求最长路)
    poj3249(求最长路)
    poj 2186
    2017年第八蓝桥杯C/C++ A组国赛 —— 第二题:生命游戏
    Fence Repair POJ
  • 原文地址:https://www.cnblogs.com/ImaY/p/8270576.html
Copyright © 2020-2023  润新知