工作中用到date的频率非常高,如Date对象的方法果对Date的方法不熟悉,每次用的时候都现看现学,就很忙乱了。昨天写页面时,遇到了这样的情况:一个首页的展览,如果正处在展览的时间中,比如展示从2017-02-14到2017-02-17,今天是2月15日,此时只能修改展示结束时间;如果还没开始展示,则开始时间和结束时间都能修改;第三种情况是展示已经结束,则这两个时间都不能修改;这就要求我需要比较时间从而进行判断;
关于比较两个时间的大小
两个方法
1是用字符串直接比较;始于时间格式已经一致的两个时间12'2017-1-2 12:23:00'>'2017-1-1 14:55:00'true这种直接用字符串比较的方法其实内部调用了String对象的localCompare方法;经测试,该方法可以精确比较到秒;
但是受限于两个比较日期的格式必须完全一样。通过new Date获取现在的时候返回的格式如下12new Date()Wed Feb 15 2017 11:27:36 GMT+0800 (CST)鉴于还需要将获取的时间通过以下分解出来年月日时分秒
123456new Date().getFullYear() //年new Date().getMonth() //月 需要注意返回的范围0-11,即0对应1月new Date().getDate() //日new Date().getHours() //0-23 小时new Date().getMinutes() //0-59 分钟new Date().getSeconds() //0-59 秒或者获取字符串格式的时间,通过str.replace(///g,’-‘)将中间的’/‘替换成’-‘;
123456new Date().toLocaleString( )//获取当前日期和时间 字符串格式"2017/2/15 上午11:49:25"new Date().toLocaleDateString(); //获取字符串格式日期"2017/2/15"new Date().toLocaleTimeString() //获取字符串格式时间"上午11:51:23"想象代码不少于6行,放弃此方法;
2 利用距离1970年1月1日0点的毫秒数进行比较
获取当前时间距离标准时间的毫秒数比较简单,一行代码搞定;1new Date().getTime()接下来,分析那两个的时间,字符串类型,格式为’2017-1-2 12:33:00’;利用Date.parse(),参数是日期格式的字符串,函并返回该日期与 1970 年 1 月 1 日午夜之间相差的毫秒数。很多书上写日期字符串的格式必须是’mm-dd-yyyy h:m:s’,但通过测试,发现并不是,如图
所以最终通过此方法,获取毫秒数,进行对比;12let startSec=Date.parse(record.start_time);let endSec=Date.parse(record.end_time);先写到这,去吃饭;