一.倒计时时间
需求:活动有一个开始时间,一个结束时间;当活动开始时页面开始显示实现倒计时样式
<div v-if="vshowStart">距离{{ end_time }}活动结束还有:{{ hh }}小时{{ mm }}分{{ ss }}秒</div>
export default (){
data(){
return{
leave:false, //页面是否销毁
hh: '-',
mm: '-',
ss: '-',
vshowStart:false, //是否显示倒计时样式
start_time: '', //活动开始时间
end_time: '', //活动结束时间
vshowStart: false, //活动是否开始
},
},
//页面销毁
beforeDestroy() {
this.leave = true;
},
methods:{
//获取数据
getData(){};
//倒计时
countdown(){
// 活动开始时间 start_time
var start_time = this.start_time.replace(/\-/g, '/'); //ios手机不兼容‘-’
start_time = new Date(start_time).getTime();
//当前时间 date1
var date1 = new Date().getTime();
// 判断活动是否开始
if (date1 >= start_time) {
this.vshowStart = true; //显示倒计时样式
} else {
//活动未开始
this.vshowStart = false; //不显示倒计时样式
setTimeout(() => {
if (!this.leave) {
this.countdown();
}
}, 60000);
return;
}
// 活动结束时间 date2
var date2 = this.end_time.replace(/\-/g, '/'); //结束时间(兼容苹果/)
date2 = new Date(date2).getTime();
// 结束活动倒计时时间 date3
var date3 = date2 - date1;
if (date3 > 0) {
//计算出相差天数
var days = Math.floor(date3 / (24 * 3600 * 1000));
//计算出小时数
var leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
this.hh = Math.floor(leave1 / (3600 * 1000));
if (days > 0) {
this.hh = days * 24 + this.hh;
}
//计算相差分钟数
var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
this.mm = Math.floor(leave2 / (60 * 1000));
//计算相差秒数
var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
this.ss = Math.round(leave3 / 1000);
} else {
//倒计时结束拿新的活动时间
this.getData();
}
setTimeout(() => {
if (!this.leave) {
this.countdown();
}
}, 1000);
},
}
二.时间格式化
formatTime(time, format = 'YYYY-MM-DD') {
if (time == '--' || !time) {
return '--';
}
const date = new Date(time);
const year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
month = month < 10 ? `0${month}` : month;
day = day < 10 ? `0${day}` : day;
hour = hour < 10 ? `0${hour}` : hour;
minute = minute < 10 ? `0${minute}` : minute;
second = second < 10 ? `0${second}` : second;
const res = {
YYYY: `${year}`,
'YYYY-MM-DD': `${year}-${month}-${day}`,
'YYYY-MM-DD HH:mm': `${year}-${month}-${day} ${hour}:${minute}`,
'YYYY-MM-DD HH:mm:ss': `${year}-${month}-${day} ${hour}:${minute}:${second}`,
'YYYY/MM/DD': `${year}/${month}/${day}`,
'YYYY/MM/DD HH:mm': `${year}/${month}/${day} ${hour}:${minute}`,
'YYYY/MM/DD HH:mm:ss': `${year}/${month}/${day} ${hour}:${minute}:${second}`
};
return res[format];
},
项目日期格式处理繁多,可以引用插件[momentjs](http://momentjs.cn/),比如以下所示:
import moment from 'moment';
/**
* 格式化日期
* @param {*} fromFormat 已知的日期格式
* @param {*} format 目标日期格式
*/
Vue.filter('moment', function (dataStr, fromFormat = undefined, format = 'YYYY-MM-DD HH:mm:ss') {
if (!dataStr) {
return '--';
}
return moment(dataStr, fromFormat).format(format);
});
```html中使用
<view>{{'20120118' | moment('YYYYMMDD','YYYY-MM-DD')}}</view>
```js中使用
import moment from 'moment';
moment(value,'YYYYMMDD').format('YYYY-MM-DD')