JS学习——日期

195 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情

前言

获取当前日期是开发中常见的需求,而且一般情况下我们需要把日期格式转换一下,我们就需要知道一些常见的日期方法。

创建日期

JS中有专门获取当前时间的函数——new Date() ,直接调用不传参数的时候获取的当前日期的GMT(格林尼治平均时间)

    const date = new Date()
    console.log(date)//Sat Dec 03 2022 19:36:23 GMT+0800 (中国标准时间)

当然我们还可以传相关的参数,可以有以下三种形式:

  • 传年,月,日,...,毫秒。这些都是数字,按照对应格式写就可以。需要注意的是其中0-11对于1-12月。所以传参时一定要把需要的月份减一
  • 传日期字符串。我们可以传一个字符串,比如"2022-12-3",跟上面一样,字符串包含的信息越多,出来的日期越准确。
  • 传时间戳。时间戳表示的是当前时间距1970-1-1的毫秒数,也许这就是程序员的浪漫。我们可以通过**getTime()**方法可以获取对应日期的时间戳。
     const date = new Date(2022,11,3) //月份减了1
    const date1 = new Date("2022-12-3" )
    const date2 = new Date(1670068530061)
    console.log(date)//Sat Dec 03 2022 00:00:00 GMT+0800 (中国标准时间)
    console.log(date1)//Sat Dec 03 2022 00:00:00 GMT+0800 (中国标准时间)
    console.log(date2)//Sat Dec 03 2022 19:55:30 GMT+0800 (中国标准时间)

转换格式

上面我们创建出来的日期都是GMT格式,一般我们需要展示的是清晰可见的,比如:年-月-日 时:分:秒;或者其他格式的日期,JS自带了几个方法可以帮助我们。

  • toDateString():将GMT格式日期的前半部分日期转为字符串。
  • toTimestring():将GMT格式日期的后半部分时间转为字符串。
  • toLocaleString():将日期转为年/月/日 时:分:秒。
  • toLocaleDateSting():将日期部分转为年/月/日。
  • toLoacalTimeSting():将时间转为时:分:秒。

需要注意的是后面三种方法在IE浏览器会将年/月/日中的‘/’变成中文xx年xx月xx日,IE兼容需要处理下。

    const date = new Date(1670068530061)
    console.log(date.toDateString())//Sat Dec 03 2022
    console.log(date.toTimeString())//Sat Dec 03 2022
    console.log(date.toLocaleString())//2022/12/3 19:55:30
    console.log(date.toLocaleDateString())//2022/12/3
    console.log(date.toLocaleTimeString())//19:55:30

获取年月等

JS还提供了单独获取日期额年、月、日等方法。

  • getFullYear():获取日期对应的年份。
  • getMonth():获取月份。注意前面提到的,获取的值比实现少1,0代表1月
  • getDay():获取星期几。跟月份一样,0-6代表星期一-星期日。这样处理也方便我们数组用一些转换。
  • getDate():获取日(1-31)。
  • getHouts():获取小时。
  • getMinutes():获取分钟。
  • getSeconds():获取秒。
  • getMilliseconds():获取毫秒。

当我们想要自定义日期的返回格式时候,就需要这些方法。结合着定时器,我们就能将时钟做出来。

    function clock(){
      const date = new Date()
      const year = date.getFullYear()
      const month = date.getMonth()+1//记得加1
      const day = date.getDate()
      const hours = date.getHours()
      const minutes = date.getMinutes()
      const seconds = date.getSeconds()
      const result = `${year}${padTime(month)}${padTime(day)}${padTime(hours)}:${padTime(minutes)}:${padTime(seconds)}`
      const ele = document.getElementsByClassName('clock')[0]
      ele.innerHTML = result
     }
     function padTime(str){
      if(typeof str === 'number'){
        str = str.toString()
      }
       return str.padStart(2,'0')
     }
     const timer = setInterval(clock,1000)

QCG}63(FR21L1O(YOCYIG(4.png

总结

从创建日期到转换日期到日期方法,我们需要文中提到的注意点,比如兼容性,月份加1等。掌握好这些知识点,那么开发中去封装转换日期格式方法,做个倒计时等就难不倒我们。