开启掘金成长之旅!这是我参与「掘金日新计划 · 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)
总结
从创建日期到转换日期到日期方法,我们需要文中提到的注意点,比如兼容性,月份加1等。掌握好这些知识点,那么开发中去封装转换日期格式方法,做个倒计时等就难不倒我们。