JS 如何比较时间大小?

JavaScript06

JS 如何比较时间大小?,第1张

1、打开Sublime  Text软件,新建HTML文档,并准备HTML结构

2、然后我们在body标签中准备好页面加载事件

3、在页面加载事件中,我们准备两个日期字符串,如下图所示,这里准备日期字符串的原因是因为很多前端的日期值一开始都是字符串的形式

5、接下来我们利用JS中的new Date方式将日期字符串转化为日期对象

6、接下来我们就可以运用IF语句直接对日期对象进行比较了

7、最后运行页面以后,我们就可以看到弹出窗口显示了比较的结果

你好,

首先来分析一个问题,两个日期是什么格式的?假设是字符串格式:

可能是:2018/04/20,也可能是:2018/04/20 12:00:00

那接下来分情况讨论。

首先看看不含时间部分的日期格式计算:

var aDate = new Date('2018/04/23') // 通过日期字符串,初始化第一个日期对象

var bDate = new Date('2018/04/25') // 同上,初始化第二个日期对象

var aDay = 24 * 60 * 60 * 1000 // 完整一天有24小时,将小时换算成毫秒时间戳

var diffDay = (bDate - aDate) / aDay // 计算间隔天数(注意日期隐式转换)

console.log(diffDay) // 2,23日-25日间隔2天

然后再来看看包含时间部分的日期格式计算:

var aDate = new Date('2018/04/23')

var bDate = new Date('2018/04/25 12:00:00') // 包含时间的日期字符串

var aDay = 24 * 60 * 60 * 1000

var diffDay = (bDate - aDate) / aDay

console.log(diffDay) // 2.5,自然计算的结果

console.log(Math.floor(diffDay)) // 2,根据个人情况向下取整,整数天

console.log(Math.ceil(diffDay)) // 3,根据个人情况向上取整,整数天

希望是你想要的结果,如有疑问请追问。

照你这个日期格式来看,很简单

"2012-01" >"2011-11"

因为字符串的比较是按位来比较的,假设比较字符串a和b,如果a的第一个字符比b的第一个字符大,则a就比b大,否则的话继续比较a和b的第二个字符,依次下去。如果a的开始n个字符恰好就是b,而a又比b多出几个字符,则a大于b;如果a和b的内容相同,即a==b。

所以说这个日期的比较可以简单的处理为字符串的比较。以你给出的两个日期为例,因为两个字符串的前3个字符都是201,比到这里是比不出结果的;接下来字符串“2012-01”的第四个字符是2,而“2011-11”的第四个字符是1,所以"2012-01" >"2011-11"。如果年份相同,可以继续比下去。