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开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
php重定向的三种方法分享
Feb 22 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
PHP count()函数讲解
Feb 03 PHP
PHP的curl函数的用法总结
Feb 14 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 PHP
Laravel实现批量更新多条数据
Apr 06 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开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
Sublime开发python程序的示例代码
2018/01/24 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
举例讲解Python常用模块
2019/03/08 Python
python批量爬取下载抖音视频
2019/06/17 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
tensorflow常用函数API介绍
2020/04/19 Python
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
空指针到底是什么
2012/08/07 面试题
软件测试有哪些?什么是配置项?
2012/02/12 面试题
基层工作经历证明
2014/01/13 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
小学副班长竞选稿
2015/11/21 职场文书
python - timeit 时间模块
2021/04/06 Python
css样式important规则的正确使用方式
2022/06/10 HTML / CSS