PHP - strtotime() return 1970

PHP - strtotime() return 1970

以下代码片段:

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

returns我:

01.01.1970-01:00:00

将“01.01.2000-11:12:32”转换为 time/date 对象以便与当前时间戳进行比较的正确方法是什么?

例如

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";
}

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

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. 您不能使用 - 分隔日期和时间。

如果您从其他来源获取输入,请尝试使用 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

尝试将 . 替换为 -:

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

同时删除日期和时间之间的 -

您可以使用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";
}