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 相关文章推荐
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
第九节--绑定
Nov 16 PHP
PHP 和 MySQL 开发的 8 个技巧
Jan 02 PHP
php 魔术函数使用说明
Feb 21 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
PHP下的浮点运算不准的解决方法
Oct 27 PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 PHP
PHP后端银联支付及退款实例代码
Jun 23 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
Laravel如何使用Redis共享Session
Feb 23 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
php页面消耗内存过大的处理办法
2013/03/18 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
window下eclipse安装python插件教程
2017/04/24 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
Python批量发送post请求的实现代码
2018/05/05 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
python实现图片转字符画
2021/02/19 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
Reformation官网:美国女装品牌
2018/09/14 全球购物
内科护士实习自我鉴定
2013/10/17 职场文书
医科大学生毕业的自我评价分享
2013/11/12 职场文书
中学生差生评语
2014/01/30 职场文书
元旦联欢会感言
2014/03/04 职场文书
法人代表委托书
2014/04/04 职场文书
我的长生果教学反思
2014/04/28 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
解除租赁合同协议书
2016/03/21 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript