加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP如何获得客户端时区以及准确显示所在地时间

发布时间:2022-01-17 14:45:48 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要为大家详细介绍了PHP如何获取客户端时区以及准确显示所在地时间,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。 这段时间给用户做了一个外贸网站,网站主要正对亚洲、欧洲已经美洲的用户,其中有涉及
  这篇文章主要为大家详细介绍了PHP如何获取客户端时区以及准确显示所在地时间,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。
  这段时间给用户做了一个外贸网站,网站主要正对亚洲、欧洲已经美洲的用户,其中有涉及到一个小功能,使用PHP实现根据访客的时区给对方显示他们当地时间,并记录。但是有点前端设计的技术都知道PHP是运行在服务器终端的代码,因此也只能获取服务器的时间,所有仅仅使用PHP本身我们是无法获取到客户端时间这个功能的,这里我们需要找到JS来帮忙。
 
   这里我们使用到JS来保存用户时区信息到COOKIE,然后用服务器端的php读取COOKIE实现根据用户时区显示当地时间的方法来实现,具体实现方法代码如下:
 
  1、JS代码
 
  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);    }}//设置Cookiefunction 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);}
  通过这2段代码我们就能基本实现PHP显示当地时间了。

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读