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 相关文章推荐
最小化数据传输――在客户端存储数据
Oct 09 PHP
source.php查看源文件
Dec 09 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
Smarty模板变量调节器用法分析
May 23 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 PHP
laravel邮件发送的实现代码示例
Jan 31 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
php生成HTML文件的类方法
2019/10/11 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
详解Bootstrap插件
2016/04/25 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python深入学习之装饰器
2014/08/31 Python
python检测远程端口是否打开的方法
2015/03/14 Python
Python多继承顺序实例分析
2018/05/26 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
Notino法国:购买香水和化妆品
2019/04/15 全球购物
护士演讲稿范文
2014/01/05 职场文书
运动会跳远广播稿
2014/02/04 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
求职个人评价范文
2014/04/09 职场文书
总经理人事任命书
2014/06/05 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
公证处委托书
2015/01/28 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
浅析Django接口版本控制
2021/06/26 Python
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS