公司项目,需要部署到国外几个地区,这里涉及到一个时区问题, 所以下面写了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函数转换即可。