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 相关文章推荐
PHP的开发框架的现状和展望
Mar 16 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
浅析php原型模式
Nov 25 PHP
PHP封装的MSSql操作类完整实例
May 26 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
禁止直接访问php文件代码分享
May 05 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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编程语言开发动态WAP页面
2006/10/09 PHP
php strtotime 函数UNIX时间戳
2009/01/14 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
个人校本研修方案
2014/05/26 职场文书
应聘会计求职信
2014/06/11 职场文书
爱护公物标语
2014/06/24 职场文书
视光学专业自荐信
2014/06/24 职场文书
场地使用证明模板
2014/10/25 职场文书
冰峪沟导游词
2015/02/09 职场文书
运动会开幕式致辞
2015/07/29 职场文书
找规律教学反思
2016/02/23 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript