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 事件机制(2)
Mar 23 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
php中的explode()函数实例介绍
Jan 18 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
thinkPHP实现瀑布流的方法
2014/11/29 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
Python星号*与**用法分析
2018/02/02 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Python正则表达式指南 推荐
2018/10/09 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
django rest framework使用django-filter用法
2020/07/15 Python
python如何将图片转换素描画
2020/09/08 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
旅游管理实习自我鉴定
2013/09/29 职场文书
留学自荐信写作方法
2014/01/27 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
店面出租协议书范本
2014/11/28 职场文书
消防演习感想
2015/08/10 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
redis 解决库存并发问题实现数量控制
2022/04/08 Redis