123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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
- }
- }
|