首页 > 解决方案 > 尝试使用 mysql db 中的时间戳时 PHP date_create 失败

问题描述

我只是想找出为什么我不断收到此错误:

Notice: Undefined variable: flsrfc

现在 $flsrfc 设置如下:

if (date_create($flstart)) {
   $flsdt = date_create($flstart);
   if ($flsdt) {
      $flsrfc = date_format($flsdt, "Y-m-d\TH:i");
   } else {
      $flsrfc = date_format(date_create(time()), "Y-m-d\TH:i");
   }
}

现在我遇到的问题是尝试使用我想要获取的格式化时间设置日期时间本地输入。这是代码以及错误说明它的来源。我的猜测是 date_create 函数不起作用,但我不知道为什么。

$HTMLOUT .= '<input name="fls" value="'.$flsrfc.'" size="30" type="datetime-local" />';

我确保 $flstart 正在从数据库中获取数据,这是它的代码:

$flstart = mysqli_fetch_row(mysqli_query("SELECT value FROM config WHERE name = 'flstart'"))[0];

我已经阅读了许多 php 的手册页和文档,试图找出原因,我在时间戳上尝试了 strtotime,不行,我也尝试将它强制转换为整数也是同样的问题。有人可以为我指出正确的方向吗?谢谢。

标签: phpmysqldatetime

解决方案


您的问题是,如果date_create失败,则$flsrfc永远不会设置。您应该将该代码重写为:

if (($flsdt = date_create($flstart)) !== false) {
    $flsrfc = date_format($flsdt, "Y-m-d\TH:i");
} 
else {
    $flsrfc = date("Y-m-d\TH:i");
}

请注意,您可以else通过调用来简化该部分,date因为它的默认输入是time().

至于失败的原因date_create,这将取决于表中数据的格式。如果您将其存储为 MySQLdatedatetime类型,则应该没有问题。否则,您可能需要使用date_create_from_format适当的格式参数来匹配表中存储的内容。


推荐阅读