You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
1.7 KiB
88 lines
1.7 KiB
4 years ago
|
<template>
|
||
|
<text>{{dateShow}}</text>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import {
|
||
|
friendlyDate
|
||
|
} from './date-format.js'
|
||
|
/**
|
||
|
* Dateformat 日期格式化
|
||
|
* @description 日期格式化组件
|
||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=3279
|
||
|
* @property {Object|String|Number} date 日期对象/日期字符串/时间戳
|
||
|
* @property {String} locale 格式化使用的语言
|
||
|
* @value zh 中文
|
||
|
* @value en 英文
|
||
|
* @property {Array} threshold 应用不同类型格式化的阈值
|
||
|
* @property {String} format 输出日期字符串时的格式
|
||
|
*/
|
||
|
export default {
|
||
|
name: 'uniDateformat',
|
||
|
props: {
|
||
|
date: {
|
||
|
type: [Object, String, Number],
|
||
|
default () {
|
||
|
return Date.now()
|
||
|
}
|
||
|
},
|
||
|
locale: {
|
||
|
type: String,
|
||
|
default: 'zh',
|
||
|
},
|
||
|
threshold: {
|
||
|
type: Array,
|
||
|
default () {
|
||
|
return [0, 0]
|
||
|
}
|
||
|
},
|
||
|
format: {
|
||
|
type: String,
|
||
|
default: 'yyyy/MM/dd hh:mm:ss'
|
||
|
},
|
||
|
// refreshRate使用不当可能导致性能问题,谨慎使用
|
||
|
refreshRate: {
|
||
|
type: [Number, String],
|
||
|
default: 0
|
||
|
}
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
refreshMark: 0
|
||
|
}
|
||
|
},
|
||
|
computed: {
|
||
|
dateShow() {
|
||
|
this.refreshMark
|
||
|
return friendlyDate(this.date, {
|
||
|
locale: this.locale,
|
||
|
threshold: this.threshold,
|
||
|
format: this.format
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
watch: {
|
||
|
refreshRate: {
|
||
|
handler() {
|
||
|
this.setAutoRefresh()
|
||
|
},
|
||
|
immediate: true
|
||
|
}
|
||
|
},
|
||
|
methods: {
|
||
|
refresh() {
|
||
|
this.refreshMark++
|
||
|
},
|
||
|
setAutoRefresh() {
|
||
|
clearInterval(this.refreshInterval)
|
||
|
if (this.refreshRate) {
|
||
|
this.refreshInterval = setInterval(() => {
|
||
|
this.refresh()
|
||
|
}, parseInt(this.refreshRate))
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style scoped></style>
|