这是我参与8月更文挑战的第4天,活动详情查看: 8月更文挑战
任何语言中都会有对时间相关处理的方法,JavaScript中当然也有很多时间相关的方法,但是平时我们用到的很少,像我就是,总是记不住,用到的时候就去搜一下,但是网上推荐的总是类似的文章,有时候就会错过很多好用的方法,今天就来总结一下相关的方法,用的时候再也不愁了。
日期格式化
toLocaleDateString()
toLocaleDateString()
是我个人很喜欢的一种日期格式化的方法,原因就是他很方便我们无须像传统方法那样,单个的获取年月日,然后拼接起来。
let time = new Date()
time.toLocaleDateString() // "2021/8/22"
但是遗憾的是,这一方法在各浏览器上的表现可能有所不同,我这里没有测试,如果只用某个浏览器的话,可以使用此方法。
toTimeString()
这个方法与上面的方法相对应,上面的方法是获取日期的,这个是获取时间的
let time = new Date()
time.toTimeString() // "23:53:58 GMT+0800 (中国标准时间)"
toLocaleString()
还有一个二合一的,获取日期与时间
let time = new Date()
time.toLocaleString() // "2021/8/22 上午11:55:26"
time.toLocaleString('chinese',{ hour12: false }) // 24小时制
这里也记录一下传统方法获取日期时间方法
function getNowFormatDate() {
var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
var currentdate = year + seperator1 + month + seperator1 + strDate;
return currentdate;
兼容性问题
这里记录一下一个兼容问题,有时候后端返回时间可能会返回这样的格式2021-08-09 18:00:00
,然后如果我们需要获取到想对应的时间格式的时候,就会用到下面的方法
new Date('2021-08-09 18:00:00')
但是我在用的时候就发现了一个兼容性的问题,在Windows平台上,上面的方法会正常运行,但是在Mac系统的safari浏览器上,会出现问题
// safari
new Date('2021-08-09 18:00:00') // -> Invalid Date
苹果手机上会不会出现相关问题我没有尝试,不过猜测可能会有一样的表现,那是因为Safari浏览器并不支持这样的时间格式,我们需要将上面的时间格式转换为202/08/09 18:00:00
let time = '2021-08-09 18:00:00'
time = time.replace(/-/g, '/')
console.log(new Date(time)) // -> Mon Aug 09 0202 18:00:00 GMT+0800 (CST) = $3