PHP time()函数返回epoch而不是当前时间

时间:2013-06-19 14:52:35

标签: php datetime

我有以下用于格式化当前日期和时间的PHP代码:

$rawdatetime = time();
$datetime = date('Y-m-d', $rawdatetime) . 'T' . date('H:i:s', $rawdatetime) . '.000Z';
$this->debug($datetime);

格式似乎工作正常,但它一直输出它是1970年;我得到以下输出:

1970-01-01T00:00:00.000Z

我的猜测是我的服务器配置不正确,但我的Google搜索没有给我任何线索。如果有帮助,我正在运行WAMP。

提前感谢你提出的任何建议。

编辑:似乎日期和时间功能正常;但是将它们分配给变量是什么问题。任何可以获得与上述相同格式的工作都会受到欢迎。但我也想知道为什么会出现这个问题。

2 个答案:

答案 0 :(得分:1)

首先,您根本不需要使用time(),因为如果您没有将值传递给该date()date()将使用当前时间作为默认值参数。

其次,您使用两个单独的"T"来电,以date()分隔。请注意,T的格式可以接受类似$datetime = date('Y-m-d \T H:i:s.\0\0\0\Z'); 的硬编码字符;你只需要用反斜杠来逃避它们,所以你不需要将它分成两个函数调用。

您的整个代码可能如下所示:

2013-06-19 T 11:18:53.000Z

给出了{{1}}

答案 1 :(得分:0)

它对我来说很完美(当回声时,而不是$this->debug)。所以要么你有一个错误的PHP版本,或者你的代码示例中没有问题。这就是我所做的:

<?php

$rawdatetime = time();
$datetime = date('Y-m-d', $rawdatetime) . 'T' . date('H:i:s', $rawdatetime) . '.000Z';
echo $datetime,"\n";