/**
* 时间戳转换成日期工具函数
* @param fmt 必填 目标日期显示格式
* @param timestamp 必填 时间戳
* @param type 选填 输出时间是否跟随当前时区,1表示输出结果为当前时区时间,2表示输出结果为北京时区时间, 默认值为1
*
* 示例:
* 当前时区为GMT+0800 (中国标准时间),format('yyyy-MM-dd hh:mm', 1537174760000) ---> 2018-09-17 16:59
* 当前时区为GMT+0800 (中国标准时间),format('yyyy-MM-dd hh:mm:ss', 1537174760000) ---> 2018-09-17 16:59:20
* 当前时区为GMT+0900 (日本标准时间),format('yyyy-MM-dd hh:mm:ss', 1537174760000) ---> 2018-09-17 17:59:20
* 当前时区为GMT+0900 (日本标准时间),format('yyyy-MM-dd hh:mm:ss', 1537174760000, 2) ---> 2018-09-17 16:59:20
*/
const format = function (fmt, timestamp, type = 1) {
const t = type === 1 ? timestamp : timestamp + new Date().getTimezoneOffset() * 60000 + 8 * 3600000;
const date2 = new Date(t);
const o = {
"M+": date2.getMonth() + 1, // 月份
"d+": date2.getDate(), // 日
"h+": date2.getHours(), // 小时
"m+": date2.getMinutes(), // 分
"s+": date2.getSeconds(), // 秒
"q+": Math.floor((date2.getMonth() + 3) / 3), // 季度
"S": date2.getMilliseconds(), // 毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
(`${date2.getFullYear()}`).substr(4 - RegExp.$1.length),
);
}
for (const k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1 ? o[k] : (`00${o[k]}`).substr((`${o[k]}`).length),
);
}
}
return fmt;
};
使用: format('今天是yyyy年MM月dd日', +new Date())