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 相关文章推荐
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
基于PHP文件操作的详细诠释
Jun 21 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
php获取QQ头像并显示的方法
Dec 23 PHP
php实现httpRequest的方法
Mar 13 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
PHP内置加密函数详解
Nov 20 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
php函数式编程简单示例
Aug 08 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
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php rsa加密解密使用详解
2015/01/14 PHP
Convert Seconds To Hours
2007/06/16 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
一文总结学习Python的14张思维导图
2017/10/17 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
使用Django清空数据库并重新生成
2020/04/03 Python
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
数据库专业英语
2012/11/30 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
网吧收银员岗位职责
2013/12/14 职场文书
大学生实习思想汇报
2014/01/12 职场文书
优秀学生干部推荐材料
2014/02/03 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
2015年信访工作总结
2015/04/07 职场文书
通知的写法
2015/04/23 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
python中的getter与setter你了解吗
2022/03/24 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python