This article describes the Javascript+php implementation method that displays local time based on the user's time zone. Share to everyone for your reference. Specific as follows:
The following code is used in a cross-time zone application, which is a previously written piece of code.
The server saves the relevant time configuration, save in the form of GMT time, the client needs to be displayed according to the customer's time zone, in order to conform to customer habits.
1. The JavaScript code is as follows:
?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
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. Server-side PHP code:
?
123456789101112131415161718192021222324 |
//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
);
}
|
Javascript+php the method of displaying local time based on the user's time zone