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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值