我知道在php中你可以从unix时间戳创建一个DateTime对象,并将其时区设置为多行,如下所示:
$date = new DateTime('@' . $timestamp);
$date_with_timezone = $date->setTimezone(new DateTimeZone('America/Chicago'));
我想在一条线上这样做。以下不起作用:
$date_with_timezone = new DateTime('@' . $timestamp, new DateTimeZone('America/Chicago'));
有没有办法从unix时间戳创建一个php DateTime对象,并在同一行上设置一个时区?
答案 0 :(得分:4)
PHP版本5.4中引入了对实例化(例如(new foo)->bar()
)支持的类成员访问(请参阅release notes),因此您可以这样做: -
$date = (new DateTime('@' . $timestamp))->setTimezone(new DateTimeZone('America/Chicago'));
答案 1 :(得分:1)
有关时区文件的说明:
注意:
当$ time参数是UNIX时间戳(例如@ 946684800)或指定时区(例如2010-01-28T15:00:00 + 02:00)时,将忽略$ timezone参数和当前时区。 / p>
http://php.net/manual/en/datetime.construct.php
作为一种解决方法,您可以创建一个函数并传入时间戳和时区。然后,您可以实现将变量赋值保持在同一行的目标。在函数中,您可以使用时间戳创建DateTime对象,然后分配时区并将其返回。