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

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. 微信小程序弹出层点击穿透问题

    问题描述:使用小程序的modal组件实现遮罩层效果时,会出现滚动穿透的问题,即遮罩层后面的页面依旧可以滚动. 解决方案: 给底层页面动态添加 position:fixed; 代码: wxml: < ...

  2. T-SQL DISTINCT子句 去重复

    语法 以下是DISTINCT关键字的基本语法,用于删除重复记录. SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE ...

  3. FreeSWITCH黑名单功能设置

    功能描述:对呼叫的号码进行过滤 步骤: 1.编译mod_blacklist 模块:进入源目录/usr/local/src/freeswitch  --> make mod_blacklist-i ...

  4. C/C++ 获取文件大小

    在C语言中测试文件的大小,主要使用二个标准函数. 1.fseek 函数原型:int fseek ( FILE * stream, long int offset, int origin ); 参数说明 ...

  5. HDU 5377 (Exgcd + 原根)

    转载自:大牛 知道一个定理了 a ^ x = y (mod p) ===>>   logd(a) * x = logd(y) (mod O(p) )      d 为 p 的 原根,  O ...

  6. JQery插件clipboard.js ----将文本复制到剪贴板的现代化方法

    ### 之前用了js自带的剪贴板对象clipboardData 对象以为就可以实现粘贴复制,但是种只支持IE的. 就找了jq的一个插件Zclip,但是网上的说法是利用了flesh来实现的,我用了之后可 ...

  7. nodejs process.memoryUsage() rss等参数啥含义

    1 前言 使用process.memoryUsage() ,然后可以得到一个对象如下: { rss: 4935680, heapTotal: 1826816, heapUsed: 650472, ex ...

  8. 如何将代码通过vs2017加载到GitHub

    (1)登陆GitHub并注册账户,在用户中新建repository  (2)建立后,会给出新建repository地址,将其复制  (3)用VS新建一个项目,勾选“新建Git存储库”或者打开一个已经创 ...

  9. 【进阶4-2期】Object.assign 原理及其实现 (转)

    这是我在公众号(高级前端进阶)看到的文章,现在做笔记  https://github.com/yygmind/blog/issues/26 浅拷贝 Object.assign 上篇文章介绍了其定义和使 ...

  10. C# WINFORM 编程中,选择**文件夹**而不是文件的方法(转)

    我们选择文件可以用 OpenFileDialog ,但是文件夹有两种方法. 法一: 用C#的FolderNameEditor类的子类FolderBrowser类来实现获取浏览文件夹对话框的功能.下面来 ...