JavaScript 时间戳转成日期格式

您所在的位置:网站首页 java把时间戳转日期 JavaScript 时间戳转成日期格式

JavaScript 时间戳转成日期格式

2023-03-13 22:30| 来源: 网络整理| 查看: 265

我们在开发中经常需要把时间戳转化成日期格式,但 JavaScript 本身自带的 Date 方法并不像 PHP date 的那么强大。因此,我们就需要自己动手写一个方法。

首先我们要先了解下需要用到的 JavaScript 自带的 Date 对象的方法:

getDate:获取一个中的某一天(1-31)

getFullYear:获取完整的年份,例:2019

getMonth:获取月份(0-11)(ps:基数从0开始)

getHours:获取小时(0-23)

getMinutes:获取分钟(0-59)

getSeconds:获取秒数(0-59)

通过上面的方法,我们就可以写出时间戳转化的方法,注意时间戳一定要精确到毫秒,因为很多后端返回的时间戳单位是秒,下面让我们看下具体写法:

/** * 日期格式化 * @param Number time */ function dateFormat (time) { const t = new Date(time) // 日期格式 const format = 'Y-m-d h:i:s' const year = t.getFullYear() // 由于 getMonth 返回值会比正常月份小 1 const month = t.getMonth() + 1 const day = t.getDate() const hours = t.getHours() const minutes = t.getMinutes() const seconds = t.getSeconds() const hash = { 'Y': year, 'm': month, 'd': day, 'h': hours, 'i': minutes, 's': seconds } return format.replace(/\w/g, o => { return hash[o] }) }

通过上面的方法,dateFormat(1558259949034) 返回的结果是 2019-5-19 17:59:9,如果我们想要的结果是小于 10 的数字前面自动补 0: 2019-05-19 17:59:09,写法可以改进下:

/** * 日期格式化 * @param Number time */ function dateFormat (time) { const t = new Date(time) // 日期格式 const format = 'Y-m-d h:i:s' let year = t.getFullYear() // 由于 getMonth 返回值会比正常月份小 1 let month = t.getMonth() + 1 let day = t.getDate() let hours = t.getHours() let minutes = t.getMinutes() let seconds = t.getSeconds() month = month > 9 ? month : `0${month}` day = day > 9 ? day : `0${day}` hours = hours > 9 ? hours : `0${hours}` minutes = minutes > 9 ? minutes : `0${minutes}` seconds = seconds > 9 ? seconds : `0${seconds}` const hash = { 'Y': year, 'm': month, 'd': day, 'h': hours, 'i': minutes, 's': seconds } return format.replace(/\w/g, o => { return hash[o] }) }

但上面的方法还不够灵活,比如,我可能只想要日期,或者不显示年,或者小于 10 的数字前面不补上 0 等等,我们约定,字母大写小于 10 的数字就补上 0 :

/** * 日期格式化 * @param Number time 时间戳 * @param String format 格式 */ function dateFormat (time, format) { const t = new Date(time) // 日期格式 format = format || 'Y-m-d h:i:s' let year = t.getFullYear() // 由于 getMonth 返回值会比正常月份小 1 let month = t.getMonth() + 1 let day = t.getDate() let hours = t.getHours() let minutes = t.getMinutes() let seconds = t.getSeconds() const hash = { 'y': year, 'm': month, 'd': day, 'h': hours, 'i': minutes, 's': seconds } // 是否补 0 const isAddZero = (o) => { return /M|D|H|I|S/.test(o) } return format.replace(/\w/g, o => { let rt = hash[o.toLocaleLowerCase()] return rt > 10 || !isAddZero(o) ? rt : `0${rt}` }) }

dateFormat(1558259949034, 'Y-M-D H:I:S') 返回结果是 2019-05-19 17:59:09。

完结,撒花。如果你有更好的写法,欢迎留言交流。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3