PHP - strtotime()返回1970年

时间:2016-12-14 12:03:33

标签: php date time strtotime

以下代码段:

echo date("d.m.Y-H:i:s", strtotime("01.01.2000-11:12:32"));

给我回复:

  

01.01.1970-01:00:00

正确的转换方式" 01.01.2000-11:12:32"到时间/日期对象,以便将它与当前时间戳进行比较?

e.g。

if (date("d.m.Y-H:i:s") > date("d.m.Y-H:i:s", strtotime("01.01.2000-11:12:32"))) {
    echo "future";
} else {
    echo "past";
}

3 个答案:

答案 0 :(得分:2)

这是由于本地化。尝试给出不同的格式,因为格式很重要:

echo date("d.m.Y-H:i:s", strtotime("01/01/2000 11:12:32"));
echo date("d.m.Y-H:i:s", strtotime("01-01-2000 11:12:32"));
  1. 您不应该有.日期和月份分隔符。
  2. 您无法使用-
  3. 分隔日期和时间

    如果您从其他来源获得输入,请尝试使用str_replace

    echo date("d.m.Y-H:i:s", strtotime(str_replace(array(".", "-"), array("/", " "), "01.01.2000-11:12:32")));
    

    输出:http://ideone.com/d19ATK

答案 1 :(得分:1)

尝试将.替换为-

echo date("d.m.Y-H:i:s", strtotime(str_replace('.', '-', "01.01.2000 11:12:32")));

同时在日期和时间之间移除-

答案 2 :(得分:1)

您可以使用DateTime::createFromFormat

$date = DateTime::createFromFormat('d.m.Y-H:i:s', '01.01.2000-11:12:32');
$now = new DateTime();

if ($now > $date) {
    echo "future";
} else {
    echo "past";
}