时间过滤器(时区)

11 篇文章 0 订阅

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); 
});

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值