mirror of
https://gitee.com/hhyykk/ipms-sjy-ui.git
synced 2025-02-02 03:34:59 +08:00
61 lines
1.1 KiB
TypeScript
61 lines
1.1 KiB
TypeScript
import { dateUtil } from '@/utils/dateUtil'
|
|
import { reactive, toRefs } from 'vue'
|
|
import { tryOnMounted, tryOnUnmounted } from '@vueuse/core'
|
|
|
|
export const 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
|
|
}
|
|
}
|