检查日期是否为空

use*_*219 7 html php

在一个while循环我怎么能有个约会显示当该日期存在?

例如:如果是日期0000-00-00,则不显示任何内容.

我目前正在阅读如下日期,但我在以下01-01-1970情况下0000-00-00:

date('d-m-Y', strtotime($row['date']))
Run Code Online (Sandbox Code Playgroud)

Tus*_*hel 7

试试这个,它适合我

while($row = mysql_fetch_array($result)){ 
 if(strtotime($row['date']) > 0){
   echo date('d-m-Y', strtotime($row['date']));
 }else{
   echo 'Date not valid or null';
 }
}
Run Code Online (Sandbox Code Playgroud)


ffo*_*ork 6

目前接受的答案是错误的.

日期"0000-00-00"被解析为"-0001-11-30".这在PHP手册的日期格式部分中有解释:

dd和DD格式可以上下溢.第0天表示上个月的最后一天,而溢出计入下个月.这使得"2008-08-00"相当于"2008-07-31"和"2008-06-31"相当于"2008-07-01"(6月只有30天).

请注意,从PHP 5.1.0开始,日期范围限制为0-31,如上面的正则表达式所示.因此,例如,"2008-06-32"不是有效的日期字符串.

也可以使用值0对mm和MM格式进行下溢.月值0表示上一年的12月.例如"2008-00-22"相当于"2007-12-22".

如果你结合前两个事实并在当天和月份下溢,则会发生以下情况:"2008-00-00"首先转换为"2007-12-00",然后转换为"2007-11-30" .这也发生在字符串"0000-00-00"中,它被转换为"-0001-11-30"(ISO 8601日历中的年份-1,即公元2世纪的公历).

如果你使用的是旧版本的PHP或32位操作系统,strtotime("0000-00-00")将返回false,但不是因为它认为它没有被设置,而是因为解析日期(11月) 30日,-0001)超出了它可以处理的日期.使用较新的PHP版本在64位系统上调用相同的函数将返回类似于-62169984000的整数(稍有差异,具体取决于系统的时区).这是因为该系统可以处理提供的日期并正确返回1970年1月1日至11月30日-0001之间的秒数.

因此,在字符串"0000-00-00"上使用strtotime()来确定它是否已被设置是不正确使用该函数并且不返回所需的结果.由于字符串"0000-00-00"被认为是此问题中的默认未设置值,因此简单的字符串比较就足够了:

while($row = mysql_fetch_array($result)){
    if($row['date'] != '0000-00-00'){ // string comparison to see if set or not
        echo date('d-m-Y', strtotime($row['date']));
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,在32位系统和较旧的PHP版本上,这仅适用于1901年12月13日到2038年1月19日之间的日期.除此之外的日期将导致strtotime($ row ['date'])返回false,即日期( )函数将解释为0并返回"01-01-1970",因为自1970年1月1日起为0秒.


小智 6

一种简单的方法是将 $row['date'] 评估为整数并测试该值,如下所示:

if(!empty((int)$row['date']))
{
  echo "NOT empty";
}
else echo "EMPTY";
Run Code Online (Sandbox Code Playgroud)

或简短版本:

!empty((int)$row['date']) ? echo "NOT empty" : echo "EMPTY";
Run Code Online (Sandbox Code Playgroud)


Dhr*_*sha 5

您应该首先检查日期字段中是否包含日期或其NULL。根据结果​​,您可以阅读日期。

while($row = mysql_fetch_array($result)){ 

if(strtotime($row['date'])!='0000-00-00'){
mydate = date('d-m-Y', strtotime($row['date']));
}else{
mydate ='';
}
}
Run Code Online (Sandbox Code Playgroud)