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 Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
php简单备份与还原MySql的方法
May 09 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
PHP实现的支付宝支付功能示例
Mar 26 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 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
简单采集了yahoo的一些数据
2007/02/14 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python最长公共子串算法实例
2015/03/07 Python
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
Python关于反射的实例代码分享
2020/02/20 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
测绘工程专业个人自我评价
2013/12/01 职场文书
教师业务学习制度
2014/01/25 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
文明城市创建标语
2014/06/16 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
写给女朋友的保证书
2015/05/09 职场文书
暑期家教宣传单
2015/07/14 职场文书