|
|
|
@ -4,11 +4,89 @@ |
|
|
|
* @author lautin |
|
|
|
* @created 2019-11-19 11:36:02 |
|
|
|
*/ |
|
|
|
// function getTimeZoneOffset(time) {
|
|
|
|
// const date = new Date(time);
|
|
|
|
// // 获取时区偏移值,返回分钟数
|
|
|
|
// // let offset = date.getTimezoneOffset();
|
|
|
|
// let offset = 0;
|
|
|
|
// return time + offset * 60 * 1000;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// /**
|
|
|
|
// * 将时间戳转化成时间对象的方法
|
|
|
|
// * @param {mixed} time 传入一个时间戳或者时间对象
|
|
|
|
// */
|
|
|
|
// function time2Date(time, isOffset = false) {
|
|
|
|
|
|
|
|
// let date;
|
|
|
|
|
|
|
|
// if (time.constructor == Date) { // 传入一个时间对象
|
|
|
|
// date = time;
|
|
|
|
|
|
|
|
// } else { // 传入一个时间戳
|
|
|
|
// // 检测时间戳的长度,确保为ms
|
|
|
|
// if (time.toString().length <= 10) {
|
|
|
|
// time = Number(time) * 1000;
|
|
|
|
// }
|
|
|
|
// // 是否对时差进行转化
|
|
|
|
// if (isOffset) {
|
|
|
|
// // time = getTimeZoneOffset(time);
|
|
|
|
// }
|
|
|
|
|
|
|
|
// // 转化成日期时间对象
|
|
|
|
// date = new Date(time);
|
|
|
|
// }
|
|
|
|
|
|
|
|
// return date;
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// /**
|
|
|
|
// * 将指定日期格式化输出,
|
|
|
|
// * @param string|object time 输入日期,为一个Date.now()或者Date.UTC返回的时间戳
|
|
|
|
// * @param string format 输出的格式
|
|
|
|
// * @param boolean isOffset 是否考虑时区
|
|
|
|
// */
|
|
|
|
// function parseTime(time, isOffset = false, cformat = null) {
|
|
|
|
|
|
|
|
// // 设置默认格式
|
|
|
|
// let format = cformat || '{y}-{m}-{d} {h}:{i}:{s}';
|
|
|
|
// time = time + 8 * 3600;
|
|
|
|
// const date = time2Date(time, isOffset);
|
|
|
|
|
|
|
|
// // 将日期时间值存入对象中
|
|
|
|
// const dataObj = {
|
|
|
|
// y: date.getFullYear(),
|
|
|
|
// m: date.getMonth() + 1, // 显示月份值需要+1
|
|
|
|
// d: date.getDate(),
|
|
|
|
// h: date.getHours(),
|
|
|
|
// i: date.getMinutes(),
|
|
|
|
// s: date.getSeconds(),
|
|
|
|
// a: date.getDay()
|
|
|
|
// };
|
|
|
|
// console.log(date);
|
|
|
|
// // 星期值需要转化为中文
|
|
|
|
// dataObj.a = '星期' + ['日', '一', '二', '三', '四', '五', '六'][dataObj.a];
|
|
|
|
|
|
|
|
// // 匹配{}中的y|m|d...部分,分别替换不同的值
|
|
|
|
// // const result = format.replace(/{(y|m|d|h|i|s|a)+}/g, (segment, key) => {
|
|
|
|
// // // 由索引提取值
|
|
|
|
// // let value = dataObj[key];
|
|
|
|
// // // 给值添加前导0
|
|
|
|
// // if (segment.length > 0 && value < 10) value = '0' + value;
|
|
|
|
// // return value || 0;
|
|
|
|
// // });
|
|
|
|
// // time = time + 8 * 3600 * 1000; // 增加8小时
|
|
|
|
// const result = date.toJSON().substr(0, 19).replace('T', ' ');
|
|
|
|
// // console.log(result);
|
|
|
|
// return result;
|
|
|
|
// }
|
|
|
|
|
|
|
|
function getTimeZoneOffset(time) { |
|
|
|
const date = new Date(time); |
|
|
|
// 获取时区偏移值,返回分钟数
|
|
|
|
// let offset = date.getTimezoneOffset();
|
|
|
|
let offset = 0; |
|
|
|
let offset = date.getTimezoneOffset(); |
|
|
|
// let offset = 0;
|
|
|
|
return time + offset * 60 * 1000; |
|
|
|
} |
|
|
|
|
|
|
|
@ -28,30 +106,58 @@ function time2Date(time, isOffset = false) { |
|
|
|
if (time.toString().length <= 10) { |
|
|
|
time = Number(time) * 1000; |
|
|
|
} |
|
|
|
let timeN; |
|
|
|
// 是否对时差进行转化
|
|
|
|
if (isOffset) { |
|
|
|
// time = getTimeZoneOffset(time);
|
|
|
|
} |
|
|
|
timeN = getTimeZoneOffset1(time); |
|
|
|
}else{ |
|
|
|
// 这也是对时差进行转换,不需要在每个处理时间格式的组件中修改isOffset为true
|
|
|
|
timeN = time-(-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000); |
|
|
|
} |
|
|
|
|
|
|
|
// 转化成日期时间对象
|
|
|
|
date = new Date(time); |
|
|
|
date = new Date(timeN); |
|
|
|
} |
|
|
|
|
|
|
|
return date; |
|
|
|
} |
|
|
|
function parseTime1(time, isOffset = false, cformat = null) { |
|
|
|
|
|
|
|
// 设置默认格式
|
|
|
|
let format = cformat || '{y}-{m}-{d} {h}:{i}:{s} {w}'; |
|
|
|
// time = time + 8 * 3600;
|
|
|
|
const date = time2Date(time, isOffset); |
|
|
|
|
|
|
|
/** |
|
|
|
* 将指定日期格式化输出, |
|
|
|
* @param string|object time 输入日期,为一个Date.now()或者Date.UTC返回的时间戳 |
|
|
|
* @param string format 输出的格式 |
|
|
|
* @param boolean isOffset 是否考虑时区 |
|
|
|
*/ |
|
|
|
// 将日期时间值存入对象中
|
|
|
|
const dataObj = { |
|
|
|
y: date.getFullYear(), |
|
|
|
m: date.getMonth() + 1, // 显示月份值需要+1
|
|
|
|
d: date.getDate(), |
|
|
|
h: date.getHours() % 12 || 12, |
|
|
|
i: date.getMinutes(), |
|
|
|
s: date.getSeconds(), |
|
|
|
w: date.getHours() >= 12 ? 'PM' : 'AM', |
|
|
|
a: date.getDay() |
|
|
|
}; |
|
|
|
console.log(date); |
|
|
|
// 星期值需要转化为中文
|
|
|
|
dataObj.a = '星期' + ['日', '一', '二', '三', '四', '五', '六'][dataObj.a]; |
|
|
|
|
|
|
|
// 匹配{}中的y|m|d...部分,分别替换不同的值
|
|
|
|
const result = format.replace(/{(y|m|d|h|i|s|a|w)+}/g, (segment, key) => { |
|
|
|
// 由索引提取值
|
|
|
|
let value = dataObj[key]; |
|
|
|
// 给值添加前导0
|
|
|
|
if (segment.length > 0 && value < 10) value = '0' + value; |
|
|
|
return value || 0; |
|
|
|
}); |
|
|
|
return result; |
|
|
|
} |
|
|
|
function parseTime(time, isOffset = false, cformat = null) { |
|
|
|
|
|
|
|
// 设置默认格式
|
|
|
|
let format = cformat || '{y}-{m}-{d} {h}:{i}:{s}'; |
|
|
|
time = time + 8 * 3600; |
|
|
|
// time = time + 8 * 3600;
|
|
|
|
const date = time2Date(time, isOffset); |
|
|
|
|
|
|
|
// 将日期时间值存入对象中
|
|
|
|
@ -69,21 +175,15 @@ function parseTime(time, isOffset = false, cformat = null) { |
|
|
|
dataObj.a = '星期' + ['日', '一', '二', '三', '四', '五', '六'][dataObj.a]; |
|
|
|
|
|
|
|
// 匹配{}中的y|m|d...部分,分别替换不同的值
|
|
|
|
// const result = format.replace(/{(y|m|d|h|i|s|a)+}/g, (segment, key) => {
|
|
|
|
// // 由索引提取值
|
|
|
|
// let value = dataObj[key];
|
|
|
|
// // 给值添加前导0
|
|
|
|
// if (segment.length > 0 && value < 10) value = '0' + value;
|
|
|
|
// return value || 0;
|
|
|
|
// });
|
|
|
|
// time = time + 8 * 3600 * 1000; // 增加8小时
|
|
|
|
const result = date.toJSON().substr(0, 19).replace('T', ' '); |
|
|
|
// console.log(result);
|
|
|
|
const result = format.replace(/{(y|m|d|h|i|s|a|w)+}/g, (segment, key) => { |
|
|
|
// 由索引提取值
|
|
|
|
let value = dataObj[key]; |
|
|
|
// 给值添加前导0
|
|
|
|
if (segment.length > 0 && value < 10) value = '0' + value; |
|
|
|
return value || 0; |
|
|
|
}); |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 发布日期的特定显示方式, |
|
|
|
* @param {string|number} time 显示日期的时间戳 |
|
|
|
@ -122,10 +222,12 @@ Object.assign(Date, { |
|
|
|
time2Date, |
|
|
|
parseTime, |
|
|
|
pubTime, |
|
|
|
parseTime1 |
|
|
|
}); |
|
|
|
|
|
|
|
export default{ |
|
|
|
time2Date, |
|
|
|
parseTime, |
|
|
|
pubTime |
|
|
|
pubTime, |
|
|
|
parseTime1 |
|
|
|
} |
|
|
|
|