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

时间:2014-06-26 06:23:10

标签: php datetime

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

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

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

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

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

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

美国太平洋夏令时间6月25日晚上10点,这种方法将于6月26日太平洋夏令时间上午12点返回午夜时分,将于6月25日中午12点返回。

2 个答案:

答案 0 :(得分:2)

// 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

答案 1 :(得分:0)

在一个时区中创建日期时间对象

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

将其更改为其他时区

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