JavaScript实现日期格式化的操作详解

 更新时间:2023年05月25日 14:35:28   作者:夜雨炊烟  
在我们做业务开发的漫长岁月里,会多次跟时间打交道,相信大多数小伙伴对日期格式化也并不陌生,本文简单记录了JavaScript实现日期格式化的过程,以及一些拓展,希望对大家有所帮助

对,就是实现日期格式化,在我们做业务开发的漫长岁月里,会多次跟时间打交道,相信大多数小伙伴对都写过类似倒计时的功能,那么对于日期格式化相信也并不陌生,这里简单记录一下实现日期格式化的过程,以及一些拓展。

在实现之前可以先了解下Date,下面简单介绍一下Date对象包含的一些属性和方法。

Date

Date作为JavaScript标准内置对象,创建的唯一方法就是通过new操作符 通过new Date()来显示当前时刻的日期和时间,否则会被当做常规函数调用,返回一个字符串。

let timer = new Date() // Date()构造函数
console.log("timer", typeof (timer)) // object

let timer = Date()
console.log("timer", typeof (timer)) // string

属性

Date.prototype

可以为Date对象添加属性,这个下面会详细介绍

Date.length

Date.lenght的值为7。这是Date()构造函数可以接受的参数个数,这7个参数分别为:centuryyearmonthdayhourminutesecond

方法

1.Date.now()

表示从1970-1-1 00:00:00 UTC(世界标准时间)至今所经过的毫秒数,也就是当前所在时间的毫秒数。

2.Date.parse()

解析日期字符串,获取该字符串与1970-1-1 00:00:00之间所经过的毫秒数。

3.Date.UTC()

Date.parse()不同的是,该方法接受长度最长与Date()构造函数参数长度相同的参数,返回1970-1-1 00:00:00 UTC之间所经过的毫秒数。

实例

上面说到Date.prototype属性,在所有Date实例中都继承自该属性,修改Date构造函数的原型对象会影响所有的Date实例。

注意:示例输出参考时间节点 2023-05-24 18:21:31:12 周三

实例属性

1.Date.prototype.constructor

返回创建了实例的构造函数,默认是 Date构造函数。

let timer = new Date()

2.Date.prototype.getDay()

返回一周中的第几天,默认0星期天。

timer.getDay() // 3

3.Date.prototype.getFullYear()

返回当前时间对应的年。

timer.getFullYear()// 2023

4.Date.prototype.getMonth()

返回当前时间所对应的月,需要注意的是月份从0开始,表示一年中的第一个月。

timer.getMonth() + 1 // 5

5.Date.prototype.getDate()

返回当前时间对应的日。

timer.getDate() // 24

6.Date.prototype.getHours()

返回当前时间对应的小时(0-23)。

timer.getHours() // 18

7.Date.prototype.getMinutes()

返回当前时间对应的分钟(0-59)。

timer.getMinutes() // 21

8.Date.prototype.getSeconds()

返回当前时间对应的秒(0-59)。

timer.getSeconds() // 31

9.Date.prototype.getMilliseconds()

返回当前时间对应的毫秒数(0-999)。

timer.getMilliseconds() // 12

10.Date.prototype.getTime()

返回当前时间对应的时间戳(毫秒数),距离初始时间1970年01月01日00时00分00秒的间隔,小于这个时间会显示负数。

new Date(timer).getTime() // 1684923691012

11.Date.prototype.valueOf()

返回当前时间的时间戳,官方解释是:返回一个Date对象的原始值

newDate.valueOf() // 1684923691012

有了上面的这些基础知识就可以来实现日期格式化了,如果想要多了解的话可以参考Date-MDN

实现日期格式化

还是以上面的时间节点为例:2023-05-24 18:21:31:12

假如这是一个日期格式的字符串

let date = '2023-05-24 18:21:31:12'
let timer = new Date(date) // 转为日期对象
let year = timer.getFullYear()
let month = timer.getMonth() + 1
let day = timer.getDate()
let hour = timer.getHours()
let minutes = timer.getMinutes()
let seconds = timer.getSeconds()

console.log(`当前时间:${year}年${month}月${day}日 ${hour}时${minutes}分${seconds}秒`)
// 当前时间:2023年5月24日 18时21分31秒

处理得到结果后,可以进一步优化,进行复用,将这些方法封装成一个函数进行调用

let date = '2023-05-24 18:21:31:12'
getDate(date)
function getDate(date) {
  let timer = new Date(date) // 转为日期对象
  let year = getZero(timer.getFullYear())
  let month = getZero(timer.getMonth() + 1)
  let day = getZero(timer.getDate())
  let hour = getZero(timer.getHours())
  let minutes = getZero(timer.getMinutes())
  let seconds = getZero(timer.getSeconds())

  console.log(`当前时间:${year}年${month}月${day}日 ${hour}时${minutes}分${seconds}秒`)
  // 当前时间:2023年05月24日 18时21分31秒
}
// 如果小于10进行补零的参数,同样封装一个函数
function getZero(zero) {
  return zero < 10 ? '0' + zero : zero
}

到这里,日期格式化处理完成,下面是一些扩展的硬核知识

扩展

思考

我们注意的是在上述日期字符串中是一个标准的日期格式,这个时候你可能会有疑惑,如果是时间戳呢?如果是标准时间呢?

如果是标准时间跟上述日期字符串处理等同,如果是时间戳需要先转换为日期格式,转换方式可以先将时间戳翻入日期对象中,然后就可以正常进行格式化处理。

let dateTime = '1684979976140'
let newDate = new Date(+dateTime) // 如果时间戳是字符串的话使用 + 进行转换

不管什么时候字符串首先都需要通过Date() 构造函数进行处理成一个日期对象格式,才可以进行后续的操作。

需要注意的是时间戳如果是上述13位表明最终取到的是精确到秒的日期,如果大于13位就相当于取到毫秒级那么就需要在原来基础上 *1000

日期转换为时间戳

根据Date-MDN文档,我们可以发现有三种方式可以将日期转换为时间戳格式

let dateTime = '2023-05-24 18:21:31:12'
let newDate = new Date(dateTime)

newDate.getTime() // 1684923691012
newDate.valueOf() // 1684923691012
Date.parse(dateTime) // 1684923691012

以上就是JavaScript实现日期格式化的操作详解的详细内容,更多关于JavaScript日期格式化的资料请关注脚本之家其它相关文章!

相关文章

  • JavaScript实现两个数组的交集

    JavaScript实现两个数组的交集

    这篇文章主要介绍了JavaScript实现两个数组的交集,给定两个数组 ​​nums1​​​和​​nums2​​返回它们的交集,输出结果中的每个元素一定是唯一的,下文详细介绍,需要的小伙伴可以参考一下
    2022-03-03
  • JS+CSS实现TreeMenu二级树形菜单完整实例

    JS+CSS实现TreeMenu二级树形菜单完整实例

    这篇文章主要介绍了JS+CSS实现TreeMenu二级树形菜单,以完整实例形式较为详细的分析了JS二级树形菜单的节点元素操作技巧,非常简单实用,需要的朋友可以参考下
    2015-09-09
  • 在js中做数字字符串补0(js补零)

    在js中做数字字符串补0(js补零)

    这篇文章主要介绍了在js中做数字字符串补0(js补零),需要的朋友可以参考下
    2017-03-03
  • 一文带你玩转JavaScript的箭头函数

    一文带你玩转JavaScript的箭头函数

    在ES6中新增了函数的简写方式----箭头函数,箭头函数的出现不仅简化了大量代码,也让代码看起来更加优雅,同时也解决了this指向问题,下面我们就来详细讲解如何玩转箭头函数
    2022-09-09
  • JS html时钟制作代码分享

    JS html时钟制作代码分享

    这篇文章主要为大家分享了JS html时钟的制作代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • JS实现控制表格行内容垂直对齐的方法

    JS实现控制表格行内容垂直对齐的方法

    这篇文章主要介绍了JS实现控制表格行内容垂直对齐的方法,通过javascript的getElementById获取元素并设置其相应样式来实现这一功能,需要的朋友可以参考下
    2015-03-03
  • CountUp.js数字滚动插件使用方法详解

    CountUp.js数字滚动插件使用方法详解

    这篇文章主要为大家详细介绍了CountUp.js数字滚动插件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 前端JS获取URL参数的4种方法总结

    前端JS获取URL参数的4种方法总结

    通过url传递参数是我们在开发中经常用到的一种传参方法,下面这篇文章主要给大家介绍了关于前端JS获取URL参数的4种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • JS实现音量控制拖动

    JS实现音量控制拖动

    这篇文章主要为大家详细介绍了JS实现音量控制拖动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • JS动态更改div高度实现代码例子

    JS动态更改div高度实现代码例子

    在Web开发中通过使用JavaScript可以动态地修改HTML元素的属性和样式,下面这篇文章主要给大家介绍了关于JS动态更改div高度实现的相关资料,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-11-11

最新评论