动态日期时间

动态获取时间

  • 今天公司接手了一个别人的项目,有一个功能是能够预定两周以后球场的使用权
  • 这个小功能是很常见的,很多涉及到预定功能的项目都会使用的到,比如酒店预定等等…

今天在公司里面是边查文档,做这个功能,做了差不多有 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 '星期六'
  }
},

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值