我正在使用Wordpress制作一个需要有效处理夏令时的网站。 我已经制作了两个PHP函数,用于将本地用户时间存储为服务器上的UTC,db和另一个将服务器UTC时间转换为本地用户时间以进行显示。
它们如下: -
//display saved UTC dates to Local user time
function ServerTimeToLocal($serverTime){
$user_id=get_current_user_id();
$user_timezone = get_user_meta($user_id, "user_timezone", true);
date_default_timezone_set(SERVER_TZ);
$utc_start_stamp = strtotime($serverTime);
date_default_timezone_set($user_timezone );
$whichday_local = date("D", $utc_start_stamp);
$start_time_local = date("h:i A", $utc_start_stamp);
return array("day"=>$whichday_local, "time"=>$start_time_local);
}
//store local user time as UTC on server
function LocalTimeToServer($localTime){
$user_id=get_current_user_id();
$user_timezone = get_user_meta($user_id, "user_timezone", true);
//store timings by local time
date_default_timezone_set($user_timezone );
$start_timestamp = strtotime($localTime);
//convert to server timezone
date_default_timezone_set(SERVER_TZ);
//echo $whichday." ".$start_time." ";
$whichday_server = date("D", $start_timestamp);
$start_time_server = date("h:i A", $start_timestamp);
return array("day"=>$whichday_server, "time"=>$start_time_server);
}
虽然我知道日期(' I')用于确定夏令时(DST)是否生效,但如何将DST纳入我的功能?
由于
答案 0 :(得分:0)
我通常会这样处理DST ......
if( date('I') != 1 )
{
return date('Y-m-d H:i:s', ( time() + 3600 ));
}
return date('Y-m-d H:i:s');
这将检查夏令时是否有效,如果是,那么它将返回日期,并添加小时。如果没有,它将只返回日期。
我把它包装在函数getDate()中。来得非常方便
答案 1 :(得分:0)
由于您注意到WordPress,您应该使用WordPress的本机函数来执行此操作,而不是编写自己的函数。
例如,而不是ServerTimeToLocal()
使用get_gmt_from_date()
。