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代码 用PHP写出自己的BLOG系统
Apr 12 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
May 10 PHP
PHP 数组基础知识小结
Aug 20 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
WordPress自定义时间显示格式
Mar 27 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 PHP
PHP与Web页面的交互示例详解二
Aug 04 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
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
基于php实现的验证码小程序
2016/12/13 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
JavaScript 的继承
2011/10/01 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
巴西在线鞋店:Shoestock
2017/10/28 全球购物
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
中东奢侈品市场:Coveti
2019/05/12 全球购物
安全检查与奖惩制度
2014/01/23 职场文书
室内趣味活动方案
2014/08/24 职场文书
个人四风问题整改措施
2014/10/24 职场文书
个人先进事迹总结
2015/02/26 职场文书