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


Posted in PHP onMarch 11, 2015

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
改进的IP计数器
Oct 09 PHP
php中对2个数组相加的函数
Jun 24 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
Jun 03 PHP
PHP 解决session死锁的方法
Jun 20 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
php 使用file_get_contents读取大文件的方法
Nov 13 PHP
smarty简单入门实例
Nov 28 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
PHP+jQuery实现即点即改功能示例
Feb 21 PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 #PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 #PHP
php模拟服务器实现autoindex效果的方法
Mar 10 #PHP
php浏览历史记录的方法
Mar 10 #PHP
php实现cookie加密的方法
Mar 10 #PHP
php遍历目录方法小结
Mar 10 #PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 #PHP
You might like
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
python连接mysql实例分享
2016/10/09 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
在python 中实现运行多条shell命令
2019/01/07 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
Python接口测试文件上传实例解析
2020/05/22 Python
Python 在局部变量域中执行代码
2020/08/07 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
七一讲话心得体会
2014/09/05 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
python关于集合的知识案例详解
2021/05/30 Python
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python