当前位置: 首页 > 编程笔记 >

javascript+php实现根据用户时区显示当地时间的方法

方绪
2023-03-14
本文向大家介绍javascript+php实现根据用户时区显示当地时间的方法,包括了javascript+php实现根据用户时区显示当地时间的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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程序设计有所帮助。

 类似资料:
  • 本文向大家介绍JavaScript实现同步于本地时间的动态时间显示方法,包括了JavaScript实现同步于本地时间的动态时间显示方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现同步于本地时间的动态时间显示方法。分享给大家供大家参考。具体分析如下: 动态显示时间的例子非常简单,了解JavaScript之后就是几行的代码便能够完成的事情, 但是对于一些未接触过Ja

  • 本文向大家介绍JavaScript实现世界各地时间显示,包括了JavaScript实现世界各地时间显示的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JavaScript实现世界各地时间显示的具体代码,供大家参考,具体内容如下 代码如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我从网络获取日期/时间字符串,格式为“ yyyy / mm / dd’T’HH:MM:SS’Z’”,它采用UTC格式。 现在,我必须确定设备的当前时区,然后将此时间转换为本地时间。 我该怎么做,请建议我! (仅供参考,目前,UTC时间为10:25 AM,印度当前时间为3:55 PM) 问题答案: 尝试使用代替 从文档: …您使用getDefault得到一个TimeZone,它根据程序运

  • 本文向大家介绍javascript实时显示北京时间的方法,包括了javascript实时显示北京时间的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实时显示北京时间的方法。分享给大家供大家参考。具体如下: 该页面中实时显示北京时间,更改时区也可以作为显示世界时间,代码如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 本文向大家介绍php实现用已经过去多长时间的方式显示时间,包括了php实现用已经过去多长时间的方式显示时间的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php用已经过去多长时间的方式显示时间的方法。分享给大家供大家参考。具体如下: 这里以一种可读性比较好的方式显示已经过去多长时间,比如:距离现在10秒,距离现在1天等等。 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍基于javascript实现动态显示当前系统时间,包括了基于javascript实现动态显示当前系统时间的使用技巧和注意事项,需要的朋友参考一下 本文实例讲解了javascript实现动态显示当前系统时间的详细代码,具体内容如下 (1)时间日期信息,应该在一个<div>中来显示 (2)定时器:每隔一秒再次访问系统时间,window对象的setTimeout() (3)时钟显示的时机(