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

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. 阿里云服务器上通过Docker部署redmine

    背景:在日常工作的过程中会遇到各种各样的问题,每个问题来了之后需要花时间解决.这里就面临两个问题. 1:问题责任不明确,有时候会遇到数据库或者物理服务器的问题,这时候就需要把相应问题指派给相应的人,传 ...

  2. maven项目导入war包

    导入war包,使用war包中的类和静态资源(css,js,包含jsp等) A项目是被导入的war工程,B项目是需要A项目的一个工程. 在<build>中 <resources> ...

  3. luasocket 安装记录 (FS1.4)

    说明:FS 1.4 使用的lua 5.2 ,需要使用luasocket 3.0 以上. 本文以FS 1.4 && luasocket 3.0 为基础,记录安装使用过程. 一.下载 &a ...

  4. jmeter4.0的汉化

    一,刚刚安装好,我们看到的是这个界面: 二,option-——>choose language -——>Chinese simplified,然后就可以啦!

  5. 无锁编程 - Double-checked Locking

    Double-checked Locking,严格意义上来讲不属于无锁范畴,无论什么时候当临界区中的代码仅仅需要加锁一次,同时当其获取锁的时候必须是线程安全的,此时就可以利用 Double-check ...

  6. 深入Golang调度器之GMP模型

    前言 随着服务器硬件迭代升级,配置也越来越高.为充分利用服务器资源,并发编程也变的越来越重要.在开始之前,需要了解一下并发(concurrency)和并行(parallesim)的区别. 并发:  逻 ...

  7. NPOI打印设置

    打印设置主要包括方向设置.缩放.纸张设置.页边距等.NPOI 1.2支持大部分打印属性,能够让你轻松满足客户的打印需要. 方向设置首先是方向设置,Excel支持两种页面方向,即纵向和横向. 在NPOI ...

  8. Confluence 6 选择一个默认的语言

    管理员可以设置应用到你 Confluence 站点所有空间的默认语言.请注意,一个独立的用户可以在他们自己的属性中选择他们独立的语言属性. 设定默认的语言 在 Confluence 站点中修改默认的语 ...

  9. RefineDet算法笔记

    ---恢复内容开始--- 一.创新点 针对two-stage的速度慢以及one-stage精度不足提出的方法,refinedet 包括三个核心部分:使用TCB来转换ARM的特征,送入ODM中进行检测: ...

  10. (批量更新)对多个符合条件的id做更新操作

    需求描述:把checkbox勾选的对应id的记录的标志位置1或0,这个其实不难的,不过我自己做的话,肯定是多次访问数据库做更新,看了老大的代码,发现差距不是一般的大,老大把sql灵活运用,结果一次访问 ...