时区转换

  公司项目,需要部署到国外几个地区,这里涉及到一个时区问题, 所以下面写了js,更改时区的函数方法。只需要在配置文件进行配置就可以。

var SERVER_TIME_ZONE=8;//时区变量 

function calcTime(time,format) 
{ 
	if(time ==null) return ;
	//获得时区偏移量  
	var timeOffset = new Date().getTimezoneOffset();  
    //获得时区小时偏移基数  
    var hour = parseInt(timeOffset / 60);  
    //获得时区分钟偏移基数  
    var munite = timeOffset % 60;  
    var prefix = "-";  
    if (hour < 0 || munite < 0) 
	{ 
		prefix = "+";  
        hour = -hour;  
        if (munite < 0) 
		{  
			munite = -munite;  
        }  
    }  
    if (hour.length == 2) 
	{  
		hour = "0" + hour;  
    }  
    if (munite.length == 2) 
	{  
		munite = "0" + munite;  
    }             
	var  offset = prefix + hour +"."+ munite;
	time = time.replace(/-/g,'/'); // 将-替换成/,因为下面这个构造函数只支持/分隔的日期字符串
	var d = new Date(time);
	utc = d.getTime() + (d.getTimezoneOffset() * 60000); 
	nd = new Date(utc + (3600000*(2*offset-SERVER_TIME_ZONE))); //1为服务器时区
    return formatDate(nd,format);
} 

function changeTime(time,format) 
{ 
	time = time.replace(/-/g,'/'); // 将-替换成/,因为下面这个构造函数只支持/分隔的日期字符串
	var d = new Date(time);
	utc = d.getTime() + (d.getTimezoneOffset() * 60000); 
	nd = new Date(utc + (3600000*SERVER_TIME_ZONE)); //1为服务器时区
    return formatDate(nd,format);
} 


 //格式化日期,
 function formatDate(date,format)
 {
    var paddNum = function(num){
      num += "";
      return num.replace(/^(\d)$/,"0$1");
    };
    //指定格式字符
    var cfg = {
       yyyy : date.getFullYear() //年 : 4位
      ,yy : date.getFullYear().toString().substring(2)//年 : 2位
      ,M  : date.getMonth() + 1  //月 : 如果1位的时候不补0
      ,MM : paddNum(date.getMonth() + 1) //月 : 如果1位的时候补0
      ,d  : date.getDate()   //日 : 如果1位的时候不补0
      ,dd : paddNum(date.getDate())//日 : 如果1位的时候补0
      ,h :  date.getHours()  //时
      ,hh : paddNum(date.getHours())  //时
      ,m :  date.getMinutes() //分
      ,mm : paddNum(date.getMinutes()) //分
      ,s :  date.getSeconds() //秒
      ,ss : paddNum(date.getSeconds()) //秒
    };
    format || (format = "yyyy-MM-dd hh:mm:ss");
    return format.replace(/([a-z])(\1)*/ig,function(m){return cfg[m];});
 } 

 function Server_localtion_zone () {
    var timeleft=new Date().getTimezoneOffset();
    if(timeleft ==-480){
 
       SERVER_TIME_ZONE=8; //中国东八时区

    }else{
   
      // SERVER_TIME_ZONE= 这里可以一和上述一样,设置自己需要的时区,进行转换

    }
    
}

上述代码核心为SERVER_TIME_ZONE 该变量为全局变量,是时区转变的核心所在。

 先调用Server_localtion_zone 函数,确定时区,对SERVER_TIME_ZONE 该变量进行赋值,时间转换则直接调用calcTime函数转换即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值