js中时间格式的处理

63 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

前言

作为前端开发,不可避免的要遇到时间处理的问题,我工作中有时也会遇到,但总是用的时候就搜一下,一直都没记住,今天抽空做下总结,学习一下。

常见的时间格式

常见的时间格式一般就三种,如下:

  • 时间戳,这种比较通用

格式:1651833646057

获取方法:new Date().getTime(),获取的是当前时间的时间戳

  • 中国标准时间

格式:Fri May 06 2022 18:45:37 GMT+0800 (中国标准时间)

获取方法:new Date()

  • 年月日格式的

比如2022-5-6 或者2022/5/6

这种类型的没法直接获取,要进行转换

时间格式转换

  • 年月日格式传时间戳

以2022/5/7为例

new Date('2022/5/7').getTime()

注意,这里的年月日要加上引号,也就是字符串形式

image.png

image.png

  • 年月日转中国标准时间

new Date('2022/5/7 10:22')

image.png

  • 时间戳转中国标准时间

以上面的时间戳为例,1651890000000

new Date(1651890000000),时间戳不用引起来

image.png

  • 中国标准时间转年月日

以Sat May 07 2022 10:20:00 GMT+0800 (中国标准时间)为例

这个要一个转换的函数,如下

function standardTimeToYmd(param) {
            //中国标准时间字符串转对象
            var date = new Date(param);
            //获取年
            var y = date.getFullYear();
            //获取月
            var m = date.getMonth() + 1;
            m = m < 10 ? ('0' + m) : m;
            //获取天
            var d = date.getDate();
            d = d < 10 ? ('0' + d) : d;
            //获取小时
            var h = date.getHours();
            //获取分钟
            var minute = date.getMinutes();
            minute = minute < 10 ? ('0' + minute) : minute;
            //获取秒
            var second = date.getSeconds();
            second = second < 10 ? ('0' + second) : second;
            //拼接年月日及时间为固定的格式,这里年月日是按'-'拼接,可以换成其它的任何形式,比如'/'
            Time = y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
            return Time
        }
        console.log(standardTimeToYmd('Sat May 07 2022 10:20:00 GMT+0800 (中国标准时间)'))

image.png

  • 时间戳转日期时间

1.可以使用上面提到的先转中国标准时间,再由中国标准时间转年月日时间

2.还是先转中国标准时间,然后使用toLocaleString()方法

image.png 方法二存在兼容性问题,用的时候要小心

  • 时间戳的前一天或者后一天

前一天时间戳:当前时间戳 - (24*60*60*1000)

后一天时间戳:当前时间戳 + (24*60*60*1000)

总结

日常开发中用到的时间格式修改的问题大概就这些,之后遇到新的再来添加。