Files
rd_mes_uniapp/plugins/time.js
2025-12-18 14:11:48 +08:00

57 lines
1.9 KiB
JavaScript

export default {
// 格式化时间函数
getTime(format = "YYYY-MM-DD hh:mm:ss", date = new Date()) {
const pad = (num, len = 2) => num.toString().padStart(len, "0");
const parts = {
YYYY: date.getFullYear().toString(),
MM: pad(date.getMonth() + 1),
DD: pad(date.getDate()),
hh: pad(date.getHours()),
mm: pad(date.getMinutes()),
ss: pad(date.getSeconds())
};
// 分组规则:日期部分和时间部分分别检查
const datePattern = /(YYYY)([^A-Za-z]?)(MM)([^A-Za-z]?)(DD)?/;
const timePattern = /(hh)([^A-Za-z]?)(mm)([^A-Za-z]?)(ss)?/;
// 检查日期部分
const dateMatch = format.match(datePattern);
if (dateMatch) {
const dateSeps = [dateMatch[2], dateMatch[4]].filter(Boolean);
if (new Set(dateSeps).size > 1) {
console.error(
`❌ 格式错误:日期部分存在多种连接符 (${dateSeps.join(", ")})。\n👉 解决方案:请统一日期部分的连接符,例如 "YYYY-MM-DD" 或 "YYYY/MM/DD"`
);
return "";
}
}
// 检查时间部分
const timeMatch = format.match(timePattern);
if (timeMatch) {
const timeSeps = [timeMatch[2], timeMatch[4]].filter(Boolean);
if (new Set(timeSeps).size > 1) {
console.error(
`❌ 格式错误:时间部分存在多种连接符 (${timeSeps.join(", ")})。\n👉 解决方案:请统一时间部分的连接符,例如 "hh:mm:ss" 或 "hh-mm-ss"`
);
return "";
}
}
// 替换格式
let result = format;
for (const key in parts) {
result = result.replace(new RegExp(key, "g"), parts[key]);
}
return result;
},
// 获取北京时间
getBeijingTime(date = new Date()) {
const f = n => String(n).padStart(2, '0');
const t = new Date(date.toLocaleString('en-US', { timeZone: 'Asia/Shanghai' }));
return `${t.getFullYear()}-${f(t.getMonth()+1)}-${f(t.getDate())} ${f(t.getHours())}:${f(t.getMinutes())}:${f(t.getSeconds())}`;
}
}