这篇文章主要为大家详细介绍了PHP如何获取客户端时区以及准确显示所在地时间,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。

这段时间给用户做了一个外贸网站,网站主要正对亚洲、欧洲已经美洲的用户,其中有涉及到一个小功能,使用PHP实现根据访客的时区给对方显示他们当地时间,并记录。但是有点前端设计的技术都知道PHP是运行在服务器终端的代码,因此也只能获取服务器的时间,所有仅仅使用PHP本身我们是无法获取到客户端时间这个功能的,这里我们需要找到JS来帮忙。

这里我们使用到JS来保存用户时区信息到COOKIE,然后用服务器端的php读取COOKIE实现根据用户时区显示当地时间的方法来实现,具体实现方法代码如下:

1、JS代码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);

}

通过这2段代码我们就能基本实现PHP显示当地时间了。

以上就是PHP如何获取客户端时区以及准确显示所在地时间的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持361模板网。

感谢打赏,我们会为大家提供更多优质资源!

php读取客户机本地时间,PHP如何获取客户端时区以及准确显示所在地时间相关推荐

  1. 关于utc时间与格林威治时间(linux上获取系统时区及代码)

    关于utc时间与格林威治时间 协调世界时,又称世界统一时间,世界标准时间,国际协调时间,简称UTC.它从英文"Coordinated Universal Time"/法文" ...

  2. excel怎样修改表格时间和计算机一制,修改Excel如何显示修改时间/修改日期怎么改excle...

    excel表格自定义格式的日期怎么改成文本格式的日期 1/3 日前,在Excel中录入期,它自动把转换成了日期,后来导入软件时,却发现全是几万的.在电子表格中把这些日期转成文本格式,所有的日期与软件导 ...

  3. java 一天的结束时间_java怎么获取一天的开始时间和结束时间

    标签: public static void main(String[] args) { Calendar c1 = new GregorianCalendar(); c1.set(Calendar. ...

  4. 瘦客户机为何不瘦反胖?

    谈起瘦客户机,相信大家都不会太陌生,但是当大家了解到瘦客户机的各方面硬件配置时,你会发现其实瘦客户机并不如想象中的那么"瘦". 以某知名品牌的瘦客户机为例,你会发现其硬件配置并不比 ...

  5. 瘦客户机与胖客户机对比

    瘦客户机是使用专业嵌入式处理器.小型本地闪存.精简版操作系统的基于PC工业标准设计的小型行业专用商用PC,配置包含专业的低功耗.高运算功能的嵌入式ARM处理器,瘦客户机没有可移除的部件,可以提供比普通 ...

  6. JAVA通信(二)——实现客户机和服务器通信

    前面一篇博客我们简单地理清了JAVA创建服务器,以及客户机连接服务器的流程,今天我们继续往下学习,实现客户机和服务器的通信.由于基本概念我们已经在前一篇博客说清楚了,这里我们就不再进行赘述.(不清楚的 ...

  7. 并与Lotus Domino 7管理客户机无缝地集成

    IBM Domino/Notes及选型考虑 这是两款软件,分别是IBM Domino和IBM Notes,它们共同供一个可以用于电子邮件. Web访问.在线日历和群组日程安排.协同工作区.公告板和新闻 ...

  8. request对象简介和获取客户机信息

    request对象(请求对象)ServletRequest|HttpServletRequest 获取客户机信息getRemoteAddr(*****) 获取IP地址getMethod() (**** ...

  9. 无盘服务器 安装客户机程序,顺网云服务端和客户端安装

    在维护云网站或 APP 端,进行平台账号注册: 访问维护云平台注册页面 访问维护云 App 下载界面 新用户注册完成,系统即自动为您定制专属安装包. 服务端安装 双击服务端 exe 安装程序,输入网吧 ...

最新文章

  1. annie安装教程与Access is denied解决方法
  2. python 字符串替换_Python基础教程,第四讲,字符串详解
  3. 史上最详细 VUE2.0 全套 demo 讲解 基础4(条件渲染)
  4. 【BZOJ】【1015】 【JSOI2008】星球大战starwar
  5. 控件加在JAVA的PANEL上,怎样才能充满
  6. Linux的主动实行措施cron和crontab(1)
  7. AD18等长线、蛇形线的设置
  8. Hanselminutes播客247-从敏捷顾问到John Wilger的敏捷团队成员
  9. html中文字怎么自动排版,CSS网页布局中文字排版九大技巧
  10. 给读医大的老铁选购电脑
  11. This application failed to start because it could not find or load the Qt platform plugin “xcb“.
  12. Intel Me更新
  13. iOS开发——frame和bounds详解
  14. 直击招聘程序员面试笔试C语言深度解析,直击招聘 程序员面试笔试C++语言深度解析(直击招聘) pdf epub mobi txt 下载...
  15. Perl错误处理机制
  16. 【计算机网络】彻底明白IP地址——计算相关地址
  17. ULua反射原理——自我理解,有问题请斧正,谢谢!
  18. 深度强化学习——基本概念(1)
  19. C#实现的两个淘宝插件源码
  20. 密码学基础(一)——哈希算法

热门文章

  1. SAP Pricing的access sequence是如何在循环被处理的
  2. 在SAP CRM呼叫中心里创建Service Request的实现技术
  3. SAP CRM和Cloud for Customer的organization unit
  4. Java Web项目,Android和微信小程序的初始页面配置
  5. 使用ABAP Push Channel(APC)开发的乒乓球游戏,可双打
  6. linux ftp命令大全,linuxftp常用命令【图解】
  7. mysql 开启引擎命令_MySql中启用InnoDB数据引擎的方法
  8. 小批量梯度下降算法步骤_TensorFlow从0到1 - 6 - 解锁梯度下降算法
  9. java字符串切割_java字符串常用操作方法(查找、截取、分割)
  10. call线程起名字_Java线程的5个使用技巧