当前位置:首页 > PHP教程 > php日期 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-15 22:49:49 浏览: 评论:0 

这篇文章主要介绍了javascript+php实现根据用户时区显示当地时间的方法,实例分析javascript获取客户端时区及与服务器端php交互的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

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

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

1. JavaScript代码如下:

  1. window.onload = function() { 
  2. //TODO begin 处理登陆用户时区 
  3.     //获得登陆用户时区与GMT时区的差值 
  4.     var exp = new Date(); 
  5.     var gmtHours = -(exp.getTimezoneOffset()/60); 
  6.     setCookie('customer_timezone',gmtHours,1); 
  7.     //判断是否为夏令时 
  8.     date = exp.format('yyyy-MM-dd HH:mm:ss'); 
  9.     if(inDaylightTime(date)){ 
  10.       setCookie('inDaylightTime',1,1); 
  11.     } 
  12. //设置Cookie 
  13. function setCookie(c_name,value,expiredays){ 
  14.     var exdate=new Date() 
  15.     exdate.setDate(exdate.getDate()+expiredays) 
  16.     document.cookie=c_name+ "=" +escape(value)+ 
  17.     ((expiredays==null) ? "" : "; expires="+exdate.toGMTString()) 
  18. //判断时间是东半球还是西半球 
  19. function isEastEarthTime(newDate) 
  20.   var dj= newDate.getGMTOffset(false); 
  21.   if (dj.indexOf("-") == -1){ 
  22.     return true; 
  23.   } else { 
  24.     return false; 
  25.   } 
  26. //是否是夏令时 
  27. function inDaylightTime(date){ 
  28.  var start = new Date(date.getTime()); 
  29.  start.setMonth(0); 
  30.  start.setDate(1); 
  31.  start.setHours(0); 
  32.  start.setMinutes(0); 
  33.  start.setSeconds(0); 
  34.  var middle = new Date(start.getTime()); 
  35.  middle.setMonth(6); 
  36.  // 如果年始和年中时差相同,则认为此国家没有夏令时 
  37.  if ((middle.getTimezoneOffset() - start.getTimezoneOffset()) == 0)  
  38.  { 
  39.    return false; 
  40.  } 
  41.  var margin = 0; 
  42.  if (this.isEastEarthTime(date)) { 
  43.    margin = middle.getTimezoneOffset(); 
  44.  } else { 
  45.    margin = start.getTimezoneOffset(); 
  46.  } 
  47.  if (date.getTimezoneOffset() == margin) { 
  48.    return true; 
  49.  } 
  50.  return false; 
  51. //DONE end 

2. 服务器端php代码:

  1. //24小时内 GMT到本地时间的转换 
  2. function gmt_to_local($time = ''$dst = FALSE){ 
  3.   //JavaScript设置Cookie,PHP取值 
  4.   if (isset($_COOKIE["customer_timezone"])){ 
  5.     $timezone = $_COOKIE["customer_timezone"]; 
  6.   }else
  7.     $timezone = 0; 
  8.   } 
  9.   if ($time == ''){ 
  10.     return now(); 
  11.   } 
  12.   //时间处理 
  13.   $time += $timezone * 3600; 
  14.      
  15.   //是否为夏令时 
  16.   if(isset($_COOKIE["inDaylightTime"]) && $_COOKIE["inDaylightTime"]==1) 
  17.   { 
  18.     $dst = TRUE; 
  19.   } 
  20.   if ($dst == TRUE){ 
  21.     $time += 3600; 
  22.   } 
  23.   return date("H:i",$time); 
  24. }

Tags: javascript+php当地时间

分享到: