首页 新闻 会员 周边 捐助

jquery比较时间大小,小于等于为true,小于为false,等于为false,这是为什么?

0
悬赏园豆:20 [已解决问题] 解决于 2019-04-04 08:54

问题:jquery比较时间大小,小于等于为true,小于为false,等于为false,这是为什么?

演示代码如下:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>比较时间大小</title>
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta name='author' content="" /> 
    <script type='text/javascript' src='https://code.jquery.com/jquery-3.3.1.min.js' charset='utf-8'></script>  
    <script type="text/javascript"> 
    function comparetime()
    {
        var starttime='2019-04-03';
        var endtime='2019-04-03';
        var rstarttime=new Date(starttime);
        var rendtime=new Date(endtime); 
        alert("是否小于等于:" + (rstarttime <= rendtime));
        alert("是否等于:" + (rstarttime == rendtime));
        alert("是否小于:" + (rstarttime < rendtime));
    }
    </script>
</head>
<body>
<input type="button" value="比较" onclick="comparetime()" />
</body>
wwachi的主页 wwachi | 初学一级 | 园豆:166
提问于:2019-04-03 16:46

rstarttime 和rendtime类型是对象,不能这样比,可以转为日期后再转为时间戳比较

绝品骚年 5年前

@绝品骚年: 谢谢你哦,知道了

wwachi 5年前
< >
分享
最佳答案
1

Date类型不是简单类型,而是对象

1.>,>=,<,<=。如果比较的一方为对象,调用这个对象的valueOf()方法,然后进行值比较。如果该对象没有valueOf()方法,则调用toString()方法,比较字符串的值。所以第一个比较为true;
2.js中==比较的双方都是对象的话,比较的是内存地址,两个对象都是new出来的,内存地址不同,所以第二个比较为false。
3.参见1,所以为false。

收获园豆:16
nicky0227 | 小虾三级 |园豆:1069 | 2019-04-03 17:26

你可以看看rstarttime..toString()结果是多少,我这里是"Wed Apr 03 2019 08:00:00 GMT+0800 (中国标准时间)",然后比较rstarttime=="Wed Apr 03 2019 08:00:00 GMT+0800 (中国标准时间)" 结果为true

nicky0227 | 园豆:1069 (小虾三级) | 2019-04-03 17:31

@nicky0227: 好的,谢谢大佬。我还有得学呢。

wwachi | 园豆:166 (初学一级) | 2019-04-04 09:17
其他回答(2)
0

这是js,jquery是封装js的库。

rstarttime和rendtime是两个不同的对象,肯定是不相同啊。

可以调用方法getTime() 获取值后再比较。
rstarttime.getTime() == rendtime.getTime()。

getTime() 获取的是当前时间距离1970-1-1的毫秒数。

收获园豆:2
从今天开始 | 园豆:244 (菜鸟二级) | 2019-04-03 17:16

谢谢哦,又知道了点

支持(0) 反对(0) wwachi | 园豆:166 (初学一级) | 2019-04-04 09:18

@wwachi: 不用谢~

支持(0) 反对(0) 从今天开始 | 园豆:244 (菜鸟二级) | 2019-04-08 17:30
0

不是任何东西都能比大小的
时间分前后不分大小,像前面那位大佬说的一样,硬要比较就转换成时间戳再比较
就像东西南北,哪个大哪个小说不清楚的

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>比较时间大小</title>
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta name='author' content="" />
    <script type='text/javascript' src='https://code.jquery.com/jquery-3.3.1.min.js' charset='utf-8'></script>
    <script type="text/javascript">
        function comparetime() {
            var starttime = '2019-04-03';
            var endtime = '2019-04-03';
            var rstarttime = (new Date(starttime)).getTime();
            var rendtime = (new Date(endtime)).getTime();
            alert("是否小于等于:" + (rstarttime <= rendtime));//true
            alert("是否等于:" + (rstarttime === rendtime));//true
            alert("是否小于:" + (rstarttime < rendtime));//false
        }
    </script>
</head>

<body>
    <input type="button" value="比较" onclick="comparetime()" />
</body>
收获园豆:2
刘下来 | 园豆:919 (小虾三级) | 2019-04-03 17:33

谢谢你哦

支持(0) 反对(0) wwachi | 园豆:166 (初学一级) | 2019-04-04 09:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册