【问题标题】:Why the strtotime() is not returning anything in following scenario?为什么 strtotime() 在以下情况下没有返回任何内容?
【发布时间】:2015-02-08 07:44:18
【问题描述】:

我有一个 $_POST 数组数据字段,其中包含 mm-dd-YYYY 格式的日期,如下所示:

$_POST['submission_date'] => 12-15-2014 //I get this after I did print_r($_POST);

现在我尝试使用 strtotime() 执行以下代码,但它没有返回任何内容。为什么?

echo "Submission Date ".strtotime($_POST['submission_date']);

请帮帮我。

谢谢。

【问题讨论】:

  • 回显的输出是什么??
  • @sgt:显示为空白。
  • 你能在它周围添加其他代码吗??
  • 你的意思是它甚至不打印Submission date
  • 你想要的输出是什么?

标签: php date timestamp strtotime


【解决方案1】:

m/d/y 或 d-m-y 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜线 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 d-m-y 格式。

为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。

Reference

阅读文档有这么难吗?您可能花了更多时间输入您的问题......而错过了所有其他有趣的琐事

【讨论】:

    【解决方案2】:

    如果发布格式为m-d-Y,则不能直接使用strtotime()函数将其转换为unix时间戳,因为它是will return false

    如果你需要使用strtotime(),那么change the input format to m/d/Y by simple str_replace()

    另一方面,您可以使用DateTime 类:

    $dt = DateTime::createFromFormat('!m-d-Y', $submission_date);
    echo $dt->format('Y-m-d'), " or ", $dt->getTimestamp();
    

    demo

    【讨论】:

      【解决方案3】:

      答案已更新

      只需添加一个字符串替换

      $dbDate = str_replace('-', '/', $_POST['submission_date']);
      

      一切都会好起来的。

      你的日期格式是American month, day and year

      并且需要/ 作为分隔符而不是-

      Working Demo based on your input.

      【讨论】:

      • 您的演示是错误的,因为您正在替换已经确定的日期。除此之外,这是有效的答案恕我直言。
      • @Glavić,抱歉,我已更改链接。
      猜你喜欢
      • 2017-05-07
      • 2019-04-01
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      相关资源
      最近更新 更多