主要讲解一下封装思想, 支持传入GMT格式:Wed Feb 01 2023 21:29:23 GMT+0800 (中国标准时间) 、时间戳格式。自定义传入不同的format格式类型,进行自动格式化,代码可以直接拿到项目中用,毕竟一个项目中有很多地方会用到,还是很简单的
首先,温习一下时间的一些方法
const date = new Date() // Wed Feb 01 2023 21:29:23 GMT+0800 (中国标准时间)
date.getYear(); // 获取当前年份(2位)
date.getFullYear(); // 获取完整的年份(4位,1970-至今)
date.getMonth(); // 获取当前月份(0-11,0代表1月)
date.getDate(); // 获取当前日(1-31)
date.getDay(); // 获取当前星期(0-6,0代表星期天)
date.getTime(); // 获取当前时间(从1970.1.1开始的毫秒数)
date.getHours(); // 获取当前小时数(0-23)
date.getMinutes(); // 获取当前分钟数(0-59)
date.getSeconds(); // 获取当前秒数(0-59)
date.getMilliseconds(); // 获取当前毫秒数(0-999)
date.getTim(); // 获取当前时间戳
date.toLocaleDateString(); //(输出结果:2023/2/1)获取当前日期
date.toLocaleTimeString(); // (输出结果:17:40:28) 获取当前时间
date.toLocaleString(); //(输出结果:2023/2/1 17:40:12)获取日期与时间
代码如下:
const REGEX_FORMAT = new RegExp("([^\]]+)|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS", "gi")
const formatDate = (value, format = 'YYYY-MM-DD') => {
if (!value) return ''
// ios 和 mac 系统中,带横杆的字符串日期是格式不了的,这里做一下判断处理
if (typeof value === "string" && new Date(value).toString() === "Invalid Date") {
value = value.replace(/-/g, "/");
}
const date = new Date(value)
const year = date.getFullYear()
const month = date.getMonth()
const days = date.getDate()
const day = date.getDay()
const hours = date.getHours()
const minutes = date.getMinutes()
const seconds = date.getSeconds()
const milliseconds = date.getMilliseconds()
const matches = {
YY: String(year).slice(-2),
yy: String(year).slice(-2),
YYYY: year,
yyyy: year,
M: month + 1,
MM: `${month + 1}`.padStart(2, '0'),
D: String(days),
DD: `${days}`.padStart(2, '0'),
H: String(hours),
HH: `${hours}`.padStart(2, '0'),
h: `${hours % 12 || 12}`.padStart(1, '0'),
hh: `${hours % 12 || 12}`.padStart(2, '0'),
m: String(minutes),
mm: `${minutes}`.padStart(2, '0'),
s: String(seconds),
ss: `${seconds}`.padStart(2, '0'),
SSS: `${milliseconds}`.padStart(3, '0'),
d: day,
}
return format.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match])
}
console.log(formatDate(Date.now(), 'YYYY-M-D'));
console.log(formatDate(new Date(), 'YYYY-MM-DD hh:mm:ss'));
如果对replace方法第二个参数不熟悉的同学可以查看replace()方法第二个参数为函数的情况_山楂树の的博客-CSDN博客