时区问题:PHP DateTime返回错误的日期

时间:2016-10-01 11:55:13

标签: php date datetime

PHPs DateTime没有做我期望它在这里做的事情....

dim_t dims[] = {10, 10}
af_randu(&a, 2, dims, f32);

在奥克兰,这是一个星期天,但即使我明确更改TimeZone没有任何变化,它仍然显示为星期六。

如何让DateTime更改日期以匹配时区?

此外,如果将新的DateTimeZone对象传递给DateTime对象绝对没有任何意义,那么首先传递它的重点是什么?这真是让我烦恼,因为我知道我有一些完全错误的东西!

1 个答案:

答案 0 :(得分:2)

当你创建DateTime第二个参数是第一个参数的DateTimeZone时,如果你想要改变DateTime的时区,你需要在使用方法setTimezone后进行。< / p>

class Time_model extends CI_model
{
    public $time_zone;
    public $tz;
    public $dt;

    public function __construct()
    {
        $this->time_zone = 'Pacific/Auckland';

        $this->tz = new DateTimeZone($this->time_zone);
        $this->dt = new DateTime('now', new DateTimeZone("UTC"));
        $this->dt->setTimezone($this->tz);
    }

    /**
     * dates
     */

    public function getDate()
    {
        $this->dt->getTimezone(); // <--- shows that the timezone is auckland where it is the 02/10/2016 
        return $this->dt->format('Y-m-d'); // <--- yet returns the 01/10/2016! 
    }
}