本文实例讲述了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程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!