如何在php日期更改时区?

时间:2011-02-23 21:27:41

标签: php datetime

我有一个以这种格式存储在数据库中的日期:

2011-02-23 13:00:00

我需要以ISO8601格式返回它,但需要将其设置为特定时区(不一定是服务器的时区)。我想要返回的是:

2011-02-23T13:00:00-0600

使用此代码:

echo date(DATE_ISO8601, strtotime("2011-02-23 13:00:00"));

我明白了:

2011-02-23T13:00:00+0000

有没有办法在日期或strtotime功能中重置时区,还是我需要去除最右边的5个字符并将所需的时区标记连接到剩余的日期/时间?

已编辑添加: 虽然我接受了下面使用新DateTime和设置新DateTimeZone的解决方案,但如果您不需要继续重置时区,我发现了一种更简单的方法:

date_default_timezone_set('America/Chicago');
$startTime = date(DATE_ISO8601, strtotime("2011-02-23 13:00:00"));

1 个答案:

答案 0 :(得分:4)

您可以使用DateTime课程。可以使用特定时区初始化日期时间对象,并轻松转换为其他时间。

从手册修改:

$date = new DateTime('2011-02-23 13:00:00', new DateTimeZone('Pacific/Nauru'));
echo $date->format('c') . "\n";

$date->setTimezone( new DateTimeZone('Europe/Berlin'));
echo $date->format('c') . "\n";