56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import { ref, onMounted, onUnmounted } from 'vue';
|
|
|
|
/**
|
|
* @description 获取本地时间
|
|
*/
|
|
export function useTime() {
|
|
let timer; // 定时器
|
|
const year = ref(0); // 年份
|
|
const month = ref(0); // 月份
|
|
const week = ref(''); // 星期几
|
|
const day = ref(0); // 天数
|
|
const hour = ref<number | string>(0); // 小时
|
|
const minute = ref<number | string>(0); // 分钟
|
|
const second = ref(0); // 秒
|
|
|
|
// 更新时间
|
|
const updateTime = () => {
|
|
const date = new Date();
|
|
year.value = date.getFullYear();
|
|
month.value = date.getMonth() + 1;
|
|
week.value = '日一二三四五六'.charAt(date.getDay());
|
|
day.value = date.getDate();
|
|
hour.value =
|
|
(date.getHours() + '')?.padStart(2, '0') ||
|
|
new Intl.NumberFormat(undefined, { minimumIntegerDigits: 2 }).format(date.getHours());
|
|
minute.value =
|
|
(date.getMinutes() + '')?.padStart(2, '0') ||
|
|
new Intl.NumberFormat(undefined, { minimumIntegerDigits: 2 }).format(date.getMinutes());
|
|
second.value = date.getSeconds();
|
|
};
|
|
|
|
// 原生时间格式化
|
|
// new Intl.DateTimeFormat('zh', {
|
|
// year: 'numeric',
|
|
// month: '2-digit',
|
|
// day: '2-digit',
|
|
// hour: '2-digit',
|
|
// minute: '2-digit',
|
|
// second: '2-digit',
|
|
// hour12: false
|
|
// }).format(new Date())
|
|
|
|
updateTime();
|
|
|
|
onMounted(() => {
|
|
clearInterval(timer);
|
|
timer = setInterval(() => updateTime(), 1000);
|
|
});
|
|
|
|
onUnmounted(() => {
|
|
clearInterval(timer);
|
|
});
|
|
|
|
return { month, day, hour, minute, second, week };
|
|
}
|