-
javascript+php实现根据用户时区显示当地时间的方法
这篇文章主要介绍了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);
- }
出处:http://www.phpfensi.com/php/20210515/15390.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式