我正在运行托管在美国服务器上的服务,该服务读取使用本地日期创建的XML Feed - 目前只是英国,但我希望确保该服务适用于所有时区。 我的流程会查看Feed中帖子的日期,并将其与现在的日期/时间进行比较(在美国的服务器上)。 我想出的解决方案是将系统本地化到feed的创建者,然后创建一个时间戳,用它来比较'now':
protected function datemath($thedate){
$currenttimezone = date_default_timezone_get();
date_default_timezone_set($this->feedtimezone);
$thedate = mktime substr($thedate,11,2),substr($thedate,14,2),
substr($thedate,17,2),substr($thedate,3,2),substr($thedate,0,2),
substr($thedate,6,4));
date_default_timezone_set($currenttimezone);
return $thedate;
}
我的问题是......这是处理这个问题的合理方式,还是有更好的,更标准化的方式,我真的应该知道?
答案 0 :(得分:1)
这是我编写的用于进行时区转换的函数。应该是不言自明的:
function switch_timezone($format, $time = null,
$to = "America/Los_Angeles", $from = "America/Los_Angeles")
{
if ($time == null) $time = time();
$from_tz = new DateTimeZone($from);
$to_tz = new DateTimeZone($to);
if (is_int($time)) $time = '@' . $time;
$dt = date_create($time, $from_tz);
if ($dt)
{
$dt->setTimezone($to_tz);
return $dt->format($format);
}
return date($format, $time);
}
答案 1 :(得分:0)
在对其他人的代码进行更多检查之后,我看到了函数
strtotime($thedate);
比使用mktime更简洁,也允许使用不同的时间格式。