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程序设计有所帮助。

(0)

相关推荐

  • PHP中遇到的时区问题解决方法

    最近在学习PHP过程中发现PHP中的格式化时间戳比北京时间晚了8个小时,上网搜索发现原来是时区不对,解决办法是: 1.永久修改 更改php.ini文件中的data.timezone = PRC  这是中国时间.重启Apache服务后生效. 2.临时修改 在使用格式化输入时间之前,添加ini_set('date.timezone','Asia/Shanghai');               或者data_default_timezone_set('PRC');//date_default_ti

  • PHP中设置时区,记录日志文件的实现代码

    复制代码 代码如下: <html><body><?phpdate_default_timezone_set('Asia/Hong_Kong');  //set time zoneset_error_handler("myHandler");               //set error handler$chinatime = date('Y-m-d H:i:s');             //get current time$max_size =

  • PHP中设置时区方法小结

    找到原因后,在网上搜索到了一些关于PHP的时区设置方法: 1.修改php.ini,在php.ini中找到data.timezone =去掉它前面的;号,然后设置data.timezone = "Asia/Shanghai";即可. 2.在程序PHP 5以上版本的程序代码中使用函数ini_set('date.timezone','Asia/Shanghai');或者date_default_timezone_set('Asia/Shanghai'); 一些常用的时区标识符说明: Asia

  • php时区转换转换函数

    复制代码 代码如下: /* * 时区转换 */ function toTimeZone($src, $from_tz = 'America/Denver', $to_tz = 'Asia/Shanghai', $fm = 'Y-m-d H:i:s') {    $datetime = new DateTime($src, new DateTimeZone($from_tz));    $datetime->setTimezone(new DateTimeZone($to_tz));    ret

  • PHP中date与gmdate的区别及默认时区设置

    一.date与gmdate有什么区别? PHP时间函数中有两个格式化函数:date()和gmdate(),在官方的文档中的描述为: 复制代码 代码如下: date()   #- 格式化一个本地时间/日期gmdate() #- 格式化一个 GMT/UTC 日期/时间,返回的是格林威治标准时(GMT). 先来举个例子,我们现在所在的时区是+8,那么服务器运行以下脚本返回的时间应该是这样的:当前时间假定是2013-03-14 12:15:27 复制代码 代码如下: echo date('Y-m-d H

  • 深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复

    PHP Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this

  • PHP跨时区(UTC时间)应用解决方案

    1.将程序内部时区设置为UTC时间.(UTC 也可以叫 GMT) PHP设置: date_default_timezone_set("UTC"); Yii设置: config/main.php 中添加 :'timeZone'=>'UTC', 如此设置后,PHP生成的时间基本都是UTC时间了.例如: //输出当前UTC时间 date("Y-m-d H:i:s"); 2.数据库中存储UTC时间. 可以用PHP控制,也可以通过设置数据库时区来实现. 3.服务端发送到

  • php输出全球各个时区列表的方法

    本文实例讲述了php输出全球各个时区列表的方法.分享给大家供大家参考.具体实现方法如下: <?php $timezones = array ( '(GMT-12:00) International Date Line West' => 'Pacific/Wake', '(GMT-11:00) Midway Island' => 'Pacific/Apia', '(GMT-11:00) Samoa' => 'Pacific/Apia', '(GMT-10:00) Hawaii' =&

  • 有关 PHP 和 MySQL 时区的一点总结

    PHP 脚本端的市区设置可以在 php.ini 下设置 date.timezone 键的值为 'Asia/Shanghai' 即可.但是通常共享虚拟主机本身没有修改 php.ini 权限.这个时候就应该在程序公共部分加入 ini_set('date.timezone','Asia/Shanghai');动态修改 php.ini 的设置.之后可以测试一下时间是否正确: var_dump(date());如果服务器的本地时间是正确的,那么一般就能解决问题了.附,PHP 5.1 以上提供了专门的函数修

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

    本文实例讲述了javascript+php实现根据用户时区显示当地时间的方法.分享给大家供大家参考.具体如下: 在跨时区应用中会用到下面代码,这是以前写的一段代码. 服务器保存相关时间配置,保存形式为GMT时间,客户端需要根据客户所在时区做相应显示,以符合客户习惯. 1. JavaScript代码如下: window.onload = function() { //TODO begin 处理登陆用户时区 //获得登陆用户时区与GMT时区的差值 var exp = new Date(); var

  • mvc C# JavaScript LigerUI oracle实现用户的注册、登陆验证、登陆

    一.登录数据库,在数据库中创建表User00,并且插入数据. 表的字段分别为: Id(编号).Name(姓名).Grid(级别).Score(积分).Password(密码).Age(年龄).Code(邀请码).(其中编号是自动编号) 部分命令如下: select * from User00; /*查询User00*/ insert into User00 values('one','优',10000,'123',24); /*插入一行数据*/ update User00 set Grid='优

  • javascript实现点击提交按钮后显示loading的方法

    本文实例讲述了javascript实现点击提交按钮后显示loading的方法.分享给大家供大家参考.具体如下: 这里可以实现点击提交按钮后显示loading,防止用户重复提交 <style> #loading { position:absolute; width:500px; height:50px; top:50%; left:50%; margin: -25px -150px; background-color:#FFFFFF; border:1px solid #CCCCCC; text

  • Javascript实现通过选择周数显示开始日和结束日的实现代码

    最近在一个项目中遇到一个查询页面,其中一个查询条件是根据选择的年份.月以及周数显示选择的该周从几号到几号,这样一个需求.在网上搜索了一下,有类似的但是没有完全一样的,只好自己动手.思路是首先取得所选择的该年月1号这一天是星期几,然后算出这一周中周一的日期. 以此为基点,第1周的结束日即为这一天加6,第2周的开始日为这一天加7,结束日为这一天加13,以此类推,直到推算出第5周的开始日和结束日. 具体代码如下: //该方法有两个参数,date是给定的日期型参数,days是需要在该日期进行加减的天数.

  • 使用 JavaScript Promise 读取 Github 用户数据

    代码如下: // Make a request for user.json fetch('/article/promise-chaining/user.json') // Load it as json .then(response => response.json()) // Make a request to GitHub .then(user => fetch(`https://api.github.com/users/${user.name}`)) // Load the respon

  • JavaScript实现定时隐藏与显示图片的方法

    本文实例讲述了JavaScript实现定时隐藏与显示图片的方法.分享给大家供大家参考.具体如下: 这里使用JavaScript实现定时隐藏与显示图片,设定图片在几秒后会自动显示,也会自动隐藏,秒数这个自己去定义吧,在JavaScript代码片段内. 运行效果如下图所示: 具体代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/lo

  • 引入JavaScript时alert弹出框显示中文乱码问题

    今天在HTML中引入JavaScript文件运行时,alert弹出的提示框中文显示为乱码. 经查有两种可能: 1.JavaScript与HTML文件编码方式不一样 办法:在引入JavaScript的代码中指定其字符集为gb2312,代码如下: <script charset="gb2312" type="text/javascript" language="javascript" src="javascript.js"&

  • JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法

    本文实例讲述了JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法.分享给大家供大家参考.具体如下: html代码: <form name="searchform" id="search-form"> <div> <b>Search</b> <input type="text" name="txtInput" title="Enter the t

  • Javascript与PHP验证用户输入URL地址是否正确

    本文实例讲述了Javascript与PHP验证用户输入URL地址是否正确的方法,分享给大家供大家参考.具体方法如下: 1.javascript检测URL地址有效性: 复制代码 代码如下: <script type="text/javascript"> function checkUrl() {  var url = document.getElementById('url').value;  if (url==''){   alert('URL 地址不能为空');  ret

  • JavaScript使表单中的内容显示在屏幕上的方法

    本文实例讲述了JavaScript使表单中的内容显示在屏幕上的方法.分享给大家供大家参考.具体实现方法如下: 一.使内容水平出现 <html> <head> <title>测试</title> <script type="text/javascript"> function to() { var txt=document.getElementById("txt").value; document.getEl

随机推荐