动态获取时间
- 今天公司接手了一个别人的项目,有一个功能是能够预定两周以后球场的使用权
- 这个小功能是很常见的,很多涉及到预定功能的项目都会使用的到,比如酒店预定等等…
今天在公司里面是边查文档,做这个功能,做了差不多有 40 分钟,主要是对时间的处理比较少,所以做的比较慢,现在已经是晚上了,就来简单的再写一遍,顺便总结一下。
源码在https://gitee.com/jimmyxuexue/js_scattered_knowledge_points/tree/master/%E5%8A%A8%E6%80%81%E8%8E%B7%E5%8F%96%E6%97%B6%E9%97%B4
需要提前学习的关于时间的知识
获取当前的中国标准是阿金
- 使用
new Date()
能够获取当前的标准时间 格式如:Mon Jun 29 2020 21:00:56 GMT+0800
获取当前时间的时间戳
- 使用
new Date().getTime()
可以获取当前时间戳,格式如: 1593435862620 - 这也就说明,要想将中国标准时间转换成时间戳,就可以使用中国标准时间的
.getTime()
方法
中国标准时间和时间戳的区别
- 中国标准时间这个’类型’,应该说是这种数据,JS 默认封装了很多好用的方法,方便我们快速的进行时间格式的转换与获取,如:
getTime()
获取年getFullYear()
获取月getgetDate
获取日getDay
获取星期 – 这里要注意,JS 是外国人定义的,在外国人眼中周日才是一周的开始,所以 0 代表的是周日- …等等 如获取时分秒
- 时间戳类型是一串数值,我们可以很方便的进行时间数值上的相加减
- 综上,时间戳类型方便我们计算时间的变化,中国标准时间方法我们对日期进行转换,所以我们要实现这个功能的需求,思路上就是对时间戳进行对象数值的计算,再转换回标准类型,做对应的操作操作取出我们需要的时间即可。
代码细节如下:
getTime() {
let now = new Date() // 获取当前的中国标准时间
console.log(now) // Mon Jun 29 2020 21:00:56 GMT+0800
/*
知识点:
只有是在时间格式是在 中国准备时间的格式下 才可以使用 getFullYear getMonth getDay...等等方法
但是中国标准时间是不方便计算的 也就是不方便时间的加减
*/
let nowString = now.getTime() //获取当前的是时间戳
console.log(nowString) //1593435862620
/*
时间戳是number类型 就很方便我们进行计算 所以要动态的获取当前时间的之后 或之前的时间最最关键的
就是使用 时间戳 进行时间的加减
时间戳一天的变化就是 1000*60*60*24 这个就是一天的毫秒数
*/
let time = new Date(nowString) // 将时间错再次转换回中国标准时间
console.log(time) // Mon Jun 29 2020 21:07:25 GMT+0800 (中国标准时间)
/*
到这里 要实现这个功能需要的知识点就已经没有了,最主要的思路就是先获取当前的时间戳,再根据当前的
时间戳进行时间的计算, 再转回 中国标准时间 使用中国标准时间的一些封装好的方法来获取具体的时间
*/
for (let i = 0; i < 14; i++) {
let times = nowString + 1000 * 60 * 60 * 24 * i
let temp = new Date(times)
let obj = {}
obj.date =
temp.getFullYear() + '-' + temp.getMonth() + '-' + temp.getDate()
obj.week = this.getWeek(temp.getDay())
this.timeObj.push(obj)
}
console.log(this.timeObj)
},
//根据星期号锁定具体星期
getWeek(week) {
switch (week) {
case 0:
return '星期日' //直接return 就不要使用break了
case 1:
return '星期一'
case 2:
return '星期二'
case 3:
return '星期三'
case 4:
return '星期四'
case 5:
return '星期五'
case 6:
return '星期六'
}
},