Files
mini-yu/uni_modules/tdesign-uniapp/components/count-down/utils.js
lingxiao865 c5af079d8c first commit
2026-02-10 08:05:03 +08:00

73 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export const TimeDataUnit = {
DD: '天',
HH: '时',
mm: '分',
ss: '秒',
SSS: '毫秒',
};
const SECOND = 1000;
const MINUTE = 60 * SECOND;
const HOUR = 60 * MINUTE;
const DAY = 24 * HOUR;
export const parseTimeData = function (time) {
const days = Math.floor(time / DAY);
const hours = Math.floor((time % DAY) / HOUR);
const minutes = Math.floor((time % HOUR) / MINUTE);
const seconds = Math.floor((time % MINUTE) / SECOND);
const milliseconds = Math.floor(time % SECOND);
return {
DD: days,
HH: hours,
mm: minutes,
ss: seconds,
SSS: milliseconds,
};
};
export const isSameSecond = function (time1, time2) {
return Math.floor(time1 / 1000) === Math.floor(time2 / 1000);
};
/**
*
* @param time 倒计时时间,毫秒单位
* @param format 倒计时格式化字符串例如dd天hh小时mm分ss秒SSS毫秒hh:mm:ss.SSShh:mm:ss
*/
export const parseFormat = function (time, format) {
const obj = {
'D+': Math.floor(time / 86400000), // 日
'H+': Math.floor((time % 86400000) / 3600000), // 小时
'm+': Math.floor((time % 3600000) / 60000), // 分
's+': Math.floor((time % 60000) / 1000), // 秒
'S+': Math.floor(time % 1000), // 毫秒
};
const timeList = [];
let timeText = format;
Object.keys(obj).forEach((prop) => {
if (new RegExp(`(${prop})`).test(timeText)) {
timeText = timeText.replace(RegExp.$1, (match, offset, source) => {
const v = `${(obj)[prop]}`;
let digit = v;
if (match.length > 1) {
digit = (match.replace(new RegExp(match[0], 'g'), '0') + v).substr(v.length);
}
const unit = source.substr(offset + match.length);
const last = timeList[timeList.length - 1];
if (last) {
const index = last.unit.indexOf(match);
if (index !== -1) {
last.unit = last.unit.substr(0, index);
}
}
timeList.push({ digit, unit, match });
return digit;
});
}
});
return { timeText, timeList };
};