123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { dateUtil } from '/@/utils/dateUtil';
- import { reactive, toRefs } from 'vue';
- import { tryOnMounted, tryOnUnmounted } from '@vueuse/core';
- export function useNow(immediate = true) {
- let timer: IntervalHandle;
- const state = reactive({
- year: 0,
- month: 0,
- week: '',
- day: 0,
- hour: '',
- minute: '',
- second: 0,
- meridiem: '',
- });
- const update = () => {
- const now = dateUtil();
- const h = now.format('HH');
- const m = now.format('mm');
- const s = now.get('s');
- state.year = now.get('y');
- state.month = now.get('M') + 1;
- state.week = '星期' + ['日', '一', '二', '三', '四', '五', '六'][now.day()];
- state.day = now.get('date');
- state.hour = h;
- state.minute = m;
- state.second = s;
- state.meridiem = now.format('A');
- };
- function start() {
- update();
- clearInterval(timer);
- timer = setInterval(() => update(), 1000);
- }
- function stop() {
- clearInterval(timer);
- }
- tryOnMounted(() => {
- immediate && start();
- });
- tryOnUnmounted(() => {
- stop();
- });
- return {
- ...toRefs(state),
- start,
- stop,
- };
- }
|