39 lines
911 B
JavaScript
39 lines
911 B
JavaScript
|
|
/**
|
||
|
|
* 时间格式化工具
|
||
|
|
* 挂载到 uni.formatTime,支持以下格式:
|
||
|
|
* uni.formatTime(date, 'YYYY-MM-DD HH:mm:ss')
|
||
|
|
* uni.formatTime(timestamp, 'YYYY/MM/DD')
|
||
|
|
*/
|
||
|
|
|
||
|
|
const pad = (n) => String(n).padStart(2, '0')
|
||
|
|
|
||
|
|
const formatTime = (date, fmt = 'YYYY-MM-DD HH:mm:ss') => {
|
||
|
|
if (!date) return ''
|
||
|
|
const d = date instanceof Date ? date : new Date(date)
|
||
|
|
if (isNaN(d.getTime())) return ''
|
||
|
|
|
||
|
|
const tokens = {
|
||
|
|
'Y+': d.getFullYear(),
|
||
|
|
'M+': d.getMonth() + 1,
|
||
|
|
'D+': d.getDate(),
|
||
|
|
'H+': d.getHours(),
|
||
|
|
'm+': d.getMinutes(),
|
||
|
|
's+': d.getSeconds(),
|
||
|
|
}
|
||
|
|
|
||
|
|
for (const [key, val] of Object.entries(tokens)) {
|
||
|
|
const match = fmt.match(new RegExp(key))
|
||
|
|
if (match) {
|
||
|
|
const len = match[0].length
|
||
|
|
const str = key === 'Y+' ? String(val).slice(-len) : len === 1 ? String(val) : pad(val)
|
||
|
|
fmt = fmt.replace(match[0], str)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return fmt
|
||
|
|
}
|
||
|
|
|
||
|
|
uni.formatTime = formatTime
|
||
|
|
|
||
|
|
export default formatTime
|