1.标准时间转换指定时间格式
Date.prototype.format = function(demand) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if(/(y+)/.test(demand)) {
demand = demand.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for(var k in o){
if(new RegExp("(" + k + ")").test(demand)){
demand = demand.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return demand;
}
2.根据不同时区,获取不同时区当前的时间
function getLocalTime(i) {
//时区分为-11~12,排出非时区字段
if(typeof i !== 'number') return;
//获取当前时间
var dTime = new Date();
//初始时间到现在时间的差
var lag = dTime.getTime();
//本地时间与GMT时间的时间偏移差
var offset = dTime.getTimezoneOffset() * 60000;
//得到现在的格林尼治时间
var utcTime = lag + offset;
return new Date(utcTime + 3600000 * i);
}
3.根据不同时间参数,返回不同时区(两者结合)
/*
format()这个方法需要前置在上面
value:时间戳(Number)或者能被Date.parse的时间格式(String)
zone:时区(Number)
formatString:返回事件格式可不填,默认时分秒
*/
function times(value,zone,formatString) {
//如果为标准时间格式进行转换操作
if(typeof value == 'string'){
value = Date.parse(value)
}
//期待得到的时间格式
formatString = formatString || 'yyyy-MM-dd hh:mm:ss';
//时区
if (typeof zone !== 'number') return;
var dTime = new Date(value);
//初始时间当前时间差值
var lag = dTime .getTime();
//本地时间与GMT时间的时间偏移差
var offset = dTime .getTimezoneOffset() * 60000;
//得到现在的格林尼治时间
var utcTime = lag + offset;
var finallyTime = utcTime + 3600000 * zone
return new Date(finallyTime).format(formatString);
};
4.Vue中通过时区展示不同时间,单纯的时间格式过滤器的话直接下载插件
4-1.插件下载及使用
/*下载npm i moment --save || cnpm ....
在main.js文件中挂载,方便全局使用
*/
//main.js
import moment from 'moment' //导入
Vue.prototype.$moment = moment; //赋值使用
this.$moment('string').format("YYYY-DD-MM")
Vue.filter('moment', function (value,formatString) {}); //过滤器使用
{{data | moment}}
4-2.时区使用---这里通过过滤器使用,赋值请自便
//main.js
import moment from 'moment/moment'
Vue.filter('moment', function (value, formatString) {
if(typeof value == 'string'){
value = Date.parse(value)
}
formatString = formatString || 'YYYY-MM-DD HH:mm:ss';
//本地的时区参数,getStor获取本地缓存
var i = getStor('times')
if (typeof i !== 'number') return;
var dTime = new Date(value);
//时差
var lag = dTime.getTime();
//本地时间与GMT时间的时间偏移差
var offset = dTime.getTimezoneOffset() * 60000;
//得到现在的格林尼治时间
var utcTime = lag + offset;
var finallyTime = utcTime + 3600000 * i
return moment(finallyTime).format(formatString);
});