我正在使用Mysql
数据库来存储数据。
我正面临有关date
字段的一些问题。日期以YYYY-MM-DD
格式存储在数据库中。当我从数据库中检索日期时,我使用以下代码。
echo(date("d.m.Y", strtotime($row_getsavedetails['Purchase_WarrantyStartDate'])));
如果数据库中存在日期,则此工作正常。
如果数据库'01 / 01/1970'中没有日期,则会显示在前端。
我无法理解,这个日期将如何出现。
请帮助我。
答案 0 :(得分:5)
UNIX timestamps表示为相对于1970年1月1日UTC的秒数。 strtotime
将以人类可读格式编写的日期转换为UNIX时间戳。如果没有有效日期,则返回false
。 date
将其第二个参数解释为整数,作为UNIX时间戳。因此,它会将false
投射到0
。从1970年1月1日起,0
为零秒。因此,您将获得01.01.1970。
答案 1 :(得分:1)
为什么不在echoing?
之前检查
if(!empty($row_getsavedetails['Purchase_WarrantyStartDate']))
{
echo(date("d.m.Y", strtotime($row_getsavedetails['Purchase_WarrantyStartDate'])));
}
else { echo "Date is not available"; }
您获得01/01/1970
这一事实,请参阅deceze's
answer.
答案 2 :(得分:0)
01/01/1970是默认的unix时间戳,如果保留为NULL。在这种情况下,最好添加一个检查来处理NULL值。
答案 3 :(得分:0)
如果您尝试转换的值为null,则会返回返回的默认日期。 您必须先检查日期是否为空。
echo empty($row_getsavedetails['Purchase_WarrantyStartDate']) ? "Date is null" : date("d.m.Y", strtotime($row_getsavedetails['Purchase_WarrantyStartDate']));
答案 4 :(得分:0)
首先,您必须知道日期已经表示(几乎在计算机的任何位置),例如1970年1月1日的毫秒数。 因此,如果您获得该日期,则表示您在创建日期时在数据库中插入的值(默认情况下)为0。