|
@@ -1,60 +0,0 @@
|
|
|
-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
|
|
|
- }
|
|
|
-}
|