以下是我想要做的一个简单示例。
我有一个包含时间戳的变量$time
。
现在,我想将其转换为不同时区的时间戳
有没有办法在不多次使用函数date_default_timezone_set()
的情况下执行此操作?
我知道我的观点可能看起来令人困惑,并且指出更少,所以请在评论中澄清任何疑问。
例如,如果我有100个电话要改变它: -
答案 0 :(得分:2)
您可以使用DateTime对象并使用SetTimezone()方法根据需要设置时区。
例如,以下代码: -
$datetime = new DateTime();
var_dump($datetime->getTimezone()->getName());
var_dump($datetime->format(DateTime::ISO8601));
$datetime->setTimezone(new DateTimeZone('UTC'));
var_dump($datetime->format(DateTime::ISO8601));
$datetime->setTimezone(new DateTimeZone('America/New_York'));
var_dump($datetime->format(DateTime::ISO8601));
给我以下输出: -
string 'Europe/London' (length=13)
string '2012-06-20T20:33:29+0100' (length=24)
string '2012-06-20T19:33:29+0000' (length=24)
string '2012-06-20T15:33:29-0400' (length=24)
我的开发服务器默认TZ是欧洲/伦敦,因此您可能会得到略有不同的结果。
有一个supported timezones here列表。
答案 1 :(得分:0)
为您举例说明我在不同时区创建日期所做的事情。以下是我的所作所为
function create_date($format, $time, $offset = -6)
{
return gmdate($format, $time + (3600 * $offset));
}
如果你想以时间戳格式保留它,只需将其修改为如下所示。
function create_date($time, $offset = -6)
{
return $time + (3600 * $offset);
}
<强>更新强>
如果您需要以文本形式输入时区,我将使用PHP Timezone List问题中的列表,然后在函数中对该数组执行简单查找以获取偏移量以使其工作。
<强>注意:强>
为了使其正常工作,原始时间必须是GMT时间