【问题标题】:PHP - strtotime() return 1970PHP - strtotime() 返回 1970
【发布时间】:2016-12-14 12:03:32
【问题描述】:

以下代码sn-p:

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”转换为时间/日期对象以与当前时间戳进行比较的正确方法是什么?

例如

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

【问题讨论】:

  • 尝试将点改为斜线。
  • @PraveenKumar 所以.. 点是允许的吗?
  • 嗯,他们是......但这是由于本地化。不是在左边,而是在右边。
  • @PraveenKumar 你的意思是.. date("d.m.Y-H:i:s", strtotime("01/01/2000-11:12:32"))?
  • 看到了.. 将在几分钟内被接受。工作得很好。

标签: php date time strtotime


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    尝试用-替换.

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-29
        • 2013-06-09
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        相关资源
        最近更新 更多