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

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

js中时间大小的比较的更多相关文章

  1. js 中时间格式化的几种方法

    1.项目中时间返回值,很过时候为毫秒值,我们需要转换成 能够看懂的时间的格式: 例如: yyyy-MM-dd HH:mm:ss 2.处理方法(处理方法有多种,可以传值到前端处理,也可以后台可以好之后再 ...

  2. js 日期时间大小比较

    <body> 开始时间:<input onfocus="setday(this)" id="startTime" name="sta ...

  3. js 判断时间大小

    //判断结束时间一定要大于开始时间 function comparativeTime(){ var isok=true; //早餐配送时间 var breakfastScanTimeMin = $(& ...

  4. 关于IE11版本下JS中时间判断的问题

    最近在做代码的优化及浏览器的兼容问题.遇到了谷歌.火狐.360兼容模式.IE(8以上)版本对时间判断大小的问题 . 在谷歌.火狐.360.IE11以下IE8以上版本下 var d1="201 ...

  5. js中时间的操作

    var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1 ...

  6. js中时间的处理

    转自 : http://blog.csdn.net/xichenguan/article/details/45512541 //将格林时间转换成字符串格式的,用于显示带页面 time : 格林时间 v ...

  7. js比较时间大小(时间为以-分割的字符串时)

    function dateCompare(startdate, enddate) {    var arr = startdate.split("-");    var start ...

  8. 关于jquery-weui.js中时间控件datetimepicker的使用

    今天第一次接触jquery-weui,不太了解用法,然而官方文档写的也很简略,只好打开源代码进行研究,我想要的是设置开始日期大于当前日期,然后在源码中发现有min这个默认为undefined的属性,于 ...

  9. js前端验证时间大小

    replace(/\-/g, "\/")是根据验证表达式把日期转化成长日期格式 function checkStartTimeAndEndTime(startTime, endTi ...

随机推荐

  1. POJ3580 SuperMemo splay伸展树,区间操作

    题意:实现一种数据结构,支持对一个数列的 6 种操作:第 x 个数到第 y 个数之间的数每个加 D:第 x 个数到第 y 个数之间全部数翻转:第 x 个数到第 y 个数之间的数,向后循环流动 c 次, ...

  2. Mudo C++网络库第五章学习笔记

    高效的多线程日志 日志(logging)有两个意思: 诊断日志(diagnostic log), 常用日志库提供日志功能; 交易日志(transaction log), 用于记录状态变更, 通过回放日 ...

  3. 使用vue-cli初始化vue项目

    在项目中使用vue我使用vue-cli脚手架搭建项目 1.先安装nodejs 2.使用npm install -g vue-cli (建议在使用这步前先安装nrm来切换npm的源利器,使得下载资源更快 ...

  4. linux /proc目录

    1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

  5. js用replaceAll全部替换的方法

    1 前言 js中字符串整体替换,只有自带的replace,并没有replaceAll,如果我们需要把字符串中的字符统一替换,可以用正则表达式,由于经常使用就在String直接加个原生方法,方便调用. ...

  6. swift 学习- 17 -- 析构器

    // 析构器 只适用与 类类型, 当一个类的实例被释放之前, 析构器会被立即调用, 析构器用关键字 deinit 来标示, 类似于构造器要用 init 来标示 // 析构过程原理 // Swift 会 ...

  7. python魔法函数之__getattr__与__getattribute__

    getattr 在访问对象的属性不存在时,调用__getattr__,如果没有定义该魔法函数会报错 class Test: def __init__(self, name, age): self.na ...

  8. Android UiAutomator2.0

    一.环境搭建 JDK(java环境).SDK(adb appt环境),这两个已经不想再叙述了直接看详见--> android studio 安装,下载地址:https://developer.a ...

  9. python用unittest+HTMLTestRunner的框架测试并生成测试报告

    直接贴代码: import unittestfrom selenium import webdriverfrom time import sleepimport osimport time # 定义打 ...

  10. ionic3 git 提交报错

    npm ERR! cordova-plugin-camera@ gen-docs: `jsdoc2md --template "jsdoc2md/TEMPLATE.md" &quo ...