vue与time(时间)

使用vuejs进行开发的过程中,积累的与time相关的东西。

时间推算

对时间进行推算view raw
/*
* @Author: nooldey
* @Date: 2018-01-10 09:06:09
* @Last Modified by: nooldey
* @Last Modified time: 2018-02-21 10:57:06
*/
/*1. 获取去年的今天*/
function zws_last() {
/*获取去年今日*/
let t = new Date();
let nt = new Date();
if (t.getMonth()+1 == 2 && t.getDate() == 29) {
nt.setMonth(t.getMonth()+1)
nt.setDate(1)
}
nt.setFullYear(t.getFullYear()-1)
return formatDate(nt,'y-M-d');
}
/*2. 获取前N天的日期*/
function zws_before(n) {
/*获取几天前*/
return zeroTime = Math.round(Date.now()-1000*3600*24*n);
}
/*3. 将时间戳转为文字-N久前*/
function zws_along(t) {
// 计算距离当前日期为:X天前
//设置基准参数
let minute = 1000 * 60;
let hour = minute * 60;
let day = hour * 24;
let month = day * 30;
//获取当前时间,计算区间
let n = new Date().getTime();
let dif = n - t;
if (dif < 0) return;
let m = dif/month;
let w = dif/(7*day);
let d = dif/day;
let h = dif/hour;
let min = dif/minute;
let txt = '';
// FROM: BJ.UIV5.COM
if (m >= 1) {
txt = parseInt(m) + '月前';
} else if (w >= 1) {
txt = parseInt(w) + '周前';
} else if (d >= 1) {
txt = parseInt(d) + '天前';
} else if (h >= 1) {
txt = parseInt(h) + '小时前';
} else if (min >= 1){
txt = parseInt(min) + '分钟前';
} else {
txt = '刚刚'
}
return txt;
}

时间格式化与时区切换

对日期的处理view raw
/*
* @Author: nooldey
* @Date: 2018-01-06 16:57:15
* @Last Modified by: nooldey
* @Last Modified time: 2018-01-10 09:13:49
*/
/* 时间格式化 */
const formatDate = (stamp, format='y-M-d') => {
/* 日期格式化,不转时区 */
if (!stamp) return;
try {
let d = new Date(stamp);
const fillzero = t => t > 9 ? t : ('0'+t);
let year = d.getFullYear(),
month = fillzero(d.getMonth()+1),
date = fillzero(d.getDate()),
hour = fillzero(d.getHours()),
min = fillzero(d.getMinutes()),
sec = fillzero(d.getSeconds());
let pre = '',aft = ''; // 输出时间的两个部分,pre:日期部分,aft:时间部分
let ymd = format.match(/^y(.+?)M(.+?)d/); // 年月日 ymd
let hm = format.match(/h\:m$/); // 时分 hm
let hms = format.match(/h\:m\:s$/); // 时分秒 hms
if (ymd) {
let line = ymd[2] || '';
pre = [year,month,date].join(line);
}
if (hm) {
aft = [hour,min].join(':');
}
if (hms) {
aft = [hour,min,sec].join(':');
}
let output = [pre,aft].join(' ');
return output.trim();
} catch (error) {
console.log('time error',error)
return stamp;
}
}
/* 时间国际化处理 */
const zeroToLocal = (stamp, format='y-M-d') => {
/* 将传入的零时区的时间转化为当地时间显示,默认输出年月日 */
/*
* 参数:
* offset: 当前时区时间差 = 零时区时间-当地时间 单位:min
* eg: 中国时区+0800 时间差为-480(min),-480/60 = -8小时
* localtime: 转换后输出的当地时间
*/
if (!stamp) return;
/* 零时区转当地时间 */
try {
let d = new Date(stamp);
if (!d || d == 'Invalid Date') return stamp;
let offset = new Date().getTimezoneOffset();
let localtime = d.getTime() - offset*60*1000;
let output = formatDate(localtime,format);
return output;
} catch (error) {
console.log('time error',error)
return stamp;
}
}
const localToZero = (stamp, format='y-M-d') => {
/* 将当地时间转化为零时区时间 */
/*
* 参数:
* offset: 当前时区时间差 = 零时区时间-当地时间 单位:min
* eg: 中国时区+0800 时间差为-480(min),-480/60 = -8小时
* zeroTime: 转换后输出的当地时间
*/
if (!stamp) return;
let d = new Date(stamp);
if (!d || d == 'Invalid Date') return stamp;
d = d.toJSON().substr(0, 19);
let [date,time] = d.split('T');
let [year,month,day] = date.split('-');
let [hour,min,sec] = time.split(':');
let output = '';
let pre = '',aft = ''; // 输出时间的两个部分,pre:日期部分,aft:时间部分
let ymd = format.match(/^y(.+?)M(.+?)d/); // 年月日 ymd
let hm = format.match(/h\:m$/); // 时分 hm
let hms = format.match(/h\:m\:s$/); // 时分秒 hms
if (ymd) {
let line = ymd[2] || '';
pre = [year,month,day].join(line);
}
if (hm) {
aft = [hour,min].join(':');
}
if (hms) {
aft = [hour,min,sec].join(':');
}
output = [pre,aft].join(' ');
return output.trim();
}
NOOLDEY

本文作者:NOOLDEY

做一个诗情画意的码农,皮皮猪,我们走!

原文链接: http://zhuweisheng.com.cn/framework/vue-time/

本站文章如无特殊声明均为原创,创作不易,转载请注明来源,谢谢!