我想以dd-mm-yyyy格式显示$ row-> depositdate。PHP strtotime在日期列为空时返回1970年的日期
如果数据库中的日期栏为空显示的日期是:01-01-1970
echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>";
如果日期是在数据库它应该显示什么空,否则在DD-MM的日期应该显示-yyyy格式。预先
由于
和Sandeep
我想以dd-mm-yyyy格式显示$ row-> depositdate。PHP strtotime在日期列为空时返回1970年的日期
如果数据库中的日期栏为空显示的日期是:01-01-1970
echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>";
如果日期是在数据库它应该显示什么空,否则在DD-MM的日期应该显示-yyyy格式。预先
由于
和Sandeep
NULL通过的strtotime解释为0,因为它要被传递的整数时间戳。 0的时间戳意味着1-1-1970。
所以你必须检查自己是否$row->depositdate === NULL
,如果是的话,根本不要叫strtotime。
谢谢GolezTrol .... – Sandy505
NULL
转换为0 - 时代(1970年1月1日)
做到这一点,而不是
echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>";
这很完美! –
您需要以前如果$按行>检查depositdata is_null或之后检查0 strtotime如果$ row-> depositdata的值对于strtotime是无法识别的。
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
哦! 我知道为什么会发生这种情况? 只需在您的SELECT查询中没有包含“depositdate” 。 首先更改SQL查询来选择所有的野生卡签到 如下所示
$sql = "SELECT * FROM `yourtable`";
你怎么知道我没有在SELECT查询中包含“depositdate”?请仔细阅读这个问题..... – Sandy505
然后检查值为空,如果是,不要指望'date'功能做你的工作适合你 - 显示器空字符串,否则显示'日期'功能输出。 –