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

开发技巧 2023-11-21 07:46:01
本文实例讲述了javascript+php实现根据用户时区显示当地时间的方法。分享给大家供大家参考。具体如下:在跨时区应用中会用到下面代码,这是以前写的一段代码。服务器保存相关时间配置,保存形式为GMT时间,客户端需要根据客户所在时区做相应显示,以符合客户习惯。1. JavaScript代码如下:window.onload = function() {//TODO begin 处理登陆用户...

本文实例讲述了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);    }}//设置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);}

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

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:https://www.coolc.net/news/show_860415.html

本站采用系统自动发货方式,付款后即出现下载入口,如有疑问请咨询在线客服!

售后时间:早10点 - 晚11:30点

咨询售后客服