0

我想我要疯了,因为这必须很简单。

我电脑上的时间目前是:14:41 当我运行以下任何代码时,它会返回:13:41。

$date = new DateTime();
$date->format('Y-m-d H:i:s') //13:41
date('Y-m-d H:i:s') //13:41

date_default_timezone_get()返回 UTC。

现在我明白为什么晚了一个小时(因为我们处于夏令时)但是没有一个函数可以考虑所有这些并返回实际时间吗?

ps 我希望在这里错过了一些明显的东西。

编辑: date('Y-m-d H:i:s -- I -- e');返回2013-09-13 14:15:47 -- 0 -- UTC。参数不I应该返回 1 吗?

4

1 回答 1

1

不要依赖 php.ini 设置。如果要控制时区,请控制时区:

<?php

$date = new DateTime();
$date->setTimezone(new DateTimeZone('Europe/London'));
$date->format('Y-m-d H:i:s e')

将“Europe/London”替换为您对“实际时间”的定义。

顺便说一句:如果date_default_timezone_get()返回 UTC,那么$date->format()在每台具有正确时钟的机器上的输出都是相同的。这就是UTC的重点。

于 2013-09-13T16:20:53.393 回答