如何在PHP中获得指定时区中当前一天的午夜?


How do I get midnight of current day in a specified timezone in PHP?

我在纽约有一个服务器,在加利福尼亚有一个"客户端",它希望服务器计算出加利福尼亚当天的午夜时间,而加利福尼亚每天有三个小时与纽约不同。

我只能够计算纽约当前一天的午夜,但我需要能够计算加利福尼亚(或任何其他任意时区)当前一天的午夜

我可以访问时区与UTC的偏移量。

$tzOffset = "-700"; // Timezone offset from UTC (in this case, PDT)

我现在使用的(半工作)方法是

strtotime("00:00:00 " . $tzOffset);

在6月25日晚上10:00 PDT,这个方法返回6月26日12:00 AM PDT作为午夜,当它应该返回6月25日12:00 AM PDT

// create time from string
$date_time = new Datetime('midnight', new Datetimezone('America/Los_Angeles'));
// string representation of time in America/Los_Angeles
echo $date_time->format('Y-m-d H:i:s') . PHP_EOL;
$date_time->setTimezone(new Datetimezone('America/New_York'));
// string representation of the same time in America/New_York
echo $date_time->format('Y-m-d H:i:s') . PHP_EOL;
http://php.net/manual/en/datetime.formats.php

创建一个时区的datetime对象

$dt = new Datetime('2014-06-25 00:00:00', new Datetimezone('America/New_York'));

更改为另一个时区

$dt->setTimezone(new Datetimezone('America/Los_Angeles'));