time(时间)

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

时间推算

对时间进行推算view raw
/* * @Author: zws <nooldey@gmail.com> * @Date: 2018-01-10 09:06:09 * @Last Modified by: zws * @Last Modified time: 2021-04-29 17:02:56 * @Description: 获取历史日期的各种格式和计算 */ /*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: ZHUWEISHENG.COM.CN 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: zws * @Last Modified time: 2021-05-07 15:26:11 * @Description: 针对时间的各种格式化 */ /* 时间格式化 */ 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/html/snippet-time/

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