/**
* 将时间戳格式化为日期对象或自定义格式的日期字符串
*
* @param {number} [timestamp=Date.now()] - 需要格式化的时间戳。如果没有提供,默认为当前时间戳
* @param {function} [callback] - 一个可选的回调函数,将日期对象作为参数,并返回自定义格式的日期字符串
* @returns {Object|string} 如果提供了回调函数,则返回回调函数的结果。否则,将返回一个包含格式化日期组件的对象。
*/
function formatDate (timestamp, callback) {
const date = new Date(timestamp || Date.now())
const result = {
YYYY: date.getFullYear(),
YY: Number(date.getFullYear().toString().slice(-2)),
M: date.getMonth() + 1,
D: date.getDate(),
h: date.getHours(),
m: date.getMinutes(),
s: date.getSeconds()
}
if (callback && typeof callback === 'function') {
return callback(result)
} else {
return result
}
}
/**
* 用指定的字符填充字符串的开头,直至所需的长度。
*
* @param {string|number} str - 要填充的字符串。如果不是字符串,则将转换为字符串
* @param {number} len - 输出字符串的预期长度
* @param {string} [chars=''] - 用于填充输入字符串的字符串。如果没有提供,默认为空格字符
* @returns {string} - 填充后的字符串。如果原始字符串长度大于或等于所需的长度,则返回原始字符串。
*/
function padStart (str, len, chars) {
if (typeof str !== 'string') {
str = str.toString()
}
chars = chars || ''
const strLength = str.length
const padLength = len - strLength
if (padLength <= 0) {
return str
}
let fullPadString = ''
while (fullPadString.length < padLength) {
fullPadString += chars
}
return fullPadString.slice(0, padLength) + str
}
Comment