当前位置: 移动技术网 > IT编程>开发语言>PHP > javascript+php实现根据用户时区显示当地时间的方法

javascript+php实现根据用户时区显示当地时间的方法

2018年06月29日  | 移动技术网IT编程  | 我要评论

非诚勿扰20101204,一周立波秀2013,欧美色就是色

本文实例讲述了javascript+php实现根据用户时区显示当地时间的方法。分享给大家供大家参考。具体如下:

在跨时区应用中会用到下面代码,这是以前写的一段代码。

服务器保存相关时间配置,保存形式为gmt时间,客户端需要根据客户所在时区做相应显示,以符合客户习惯。

1. javascript代码如下:

window.onload = function() {
//todo begin 处理登陆用户时区
    //获得登陆用户时区与gmt时区的差值
    var exp = new date();
    var gmthours = -(exp.gettimezoneoffset()/60);
    setcookie('customer_timezone',gmthours,1);
    //判断是否为夏令时
    date = exp.format('yyyy-mm-dd hh:mm:ss');
    if(indaylighttime(date)){
      setcookie('indaylighttime',1,1);
    }
}
//设置cookie
function setcookie(c_name,value,expiredays){
    var exdate=new date()
    exdate.setdate(exdate.getdate()+expiredays)
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : "; expires="+exdate.togmtstring())
}
//判断时间是东半球还是西半球
function iseastearthtime(newdate)
{
  var dj= newdate.getgmtoffset(false);
  if (dj.indexof("-") == -1){
    return true;
  } else {
    return false;
  }
}
//是否是夏令时
function indaylighttime(date){
 var start = new date(date.gettime());
 start.setmonth(0);
 start.setdate(1);
 start.sethours(0);
 start.setminutes(0);
 start.setseconds(0);
 var middle = new date(start.gettime());
 middle.setmonth(6);
 // 如果年始和年中时差相同,则认为此国家没有夏令时
 if ((middle.gettimezoneoffset() - start.gettimezoneoffset()) == 0) 
 {
   return false;
 }
 var margin = 0;
 if (this.iseastearthtime(date)) {
   margin = middle.gettimezoneoffset();
 } else {
   margin = start.gettimezoneoffset();
 }
 if (date.gettimezoneoffset() == margin) {
   return true;
 }
 return false;
}
//done end

2. 服务器端php代码:

//24小时内 gmt到本地时间的转换
function gmt_to_local($time = '', $dst = false){
  //javascript设置cookie,php取值
  if (isset($_cookie["customer_timezone"])){
    $timezone = $_cookie["customer_timezone"];
  }else{
    $timezone = 0;
  }
  if ($time == ''){
    return now();
  }
  //时间处理
  $time += $timezone * 3600;
   
  //是否为夏令时
  if(isset($_cookie["indaylighttime"]) && $_cookie["indaylighttime"]==1)
  {
    $dst = true;
  }
  if ($dst == true){
    $time += 3600;
  }
  return date("h:i",$time);
}

希望本文所述对大家的php程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网