PHP strtotime返回1970日期,当date列为null时

时间:2011-10-12 08:42:11

标签: php date-format strtotime

我想以dd-mm-yyyy格式显示$ row-> depositdate。

如果数据库中的日期列为空,则显示的日期为: 01-01-1970

echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>";

如果数据库中的日期为空,则不显示任何内容,否则应显示dd-mm-yyyy格式的日期。

提前致谢

和Sandeep

5 个答案:

答案 0 :(得分:19)

由strtotime将NULL解释为0,因为它希望传递一个整数时间戳。时间戳0表示1-1-1970。

因此,如果$row->depositdate === NULL,您必须自行检查,如果是,请不要直接调用strtotime。

答案 1 :(得分:8)

NULL转换为0 - 纪元(1-1-1970)

改为

echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>";

答案 2 :(得分:0)

如果$ row-&gt; depositdata的值无法识别strtotime,您需要先检查$ row-&gt; depositdata is_null或在strtotime后检查0。

  echo "<td align=center>";
  if (!is_null($row->depositdate))
  {
     $jUnixDate = strtotime($row->depositdate));
     if ($jUnixDate > 0)
     {
          echo date('d-m-Y', $jUnixDate);
     }
  }
  echo "</td>";

strtotime期望得到一个包含英文日期格式的字符串,并尝试将该格式解析为Unix timestamp(自1970年1月1日00:00:00 UTC以来的秒数),相对于现在给出的时间戳,或者如果现在没有提供当前时间。

有关unixtime和Y2K38问题的更多信息:http://en.wikipedia.org/wiki/Year_2038_problem

答案 3 :(得分:0)

I am able to insert value into DB (SQL Server -- Microsoft) with PHP and value stored is: 2021-03-25 22:45:00

When I trying to fetch the value from DB:

 $db = trim($row_table['db_timestamp']);
 $timestamp = strtotime('m-d-y',$db);
 echo date("m-d-Y H:i:s", $timestamp);

output is : 01-01-1970 05:30:00

答案 4 :(得分:-1)

哦! 我知道为什么会这样吗? 只是你还没有包括“depositdate” 在您的SELECT查询中。 首先更改SQL查询以选择带有通配符的所有内容 如图所示

$sql = "SELECT * FROM `yourtable`";