Welcome 微信登录

首页 / 网页编程 / 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);}}//设置Cookiefunction 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程序设计有所帮助。