检查$ date是否等于0000-00-00 00:00:00

时间:2012-01-13 16:36:18

标签: php date

我想要一个逻辑,如果$ due等于没有日期,那么我希望数据从2000开始。我的代码不起作用。

if($due == '0000-00-00 00:00:00'){
    $due =  strtotime('2000-00-00 00:00:00');
}

7 个答案:

答案 0 :(得分:30)

如果你在$ due中存储strtotime(),那么你也需要比较它

if($due == strtotime('0000-00-00 00:00:00')){
    $due =  strtotime('2000-00-00 00:00:00');
}

或者更简单地说

if($due == 0){
    $due =  strtotime('2000-00-00 00:00:00');
}

但是如果$ due来自你的db作为一个字符串,你会想要strtotime()它:

$due = strtotime($due);
if($due == 0){
    $due =  strtotime('2000-00-00 00:00:00');
}

但要注意时区。也就是说,strtotime('0000-00-0000:00:00 UTC')!= strtotime('0000-00-0000,00:00 EST')。这也可能会打破你的比较。

答案 1 :(得分:1)

您需要确保以相同的格式比较值。根据您目前的情况,将会发生以下三件事:

  • 如果$dueint,则您将其与0000-00-00 00:00:00进行比较的字符串将转换为int,这将导致0,并将$due0进行比较。这只会导致匹配$due === 0
  • 如果$duebool,则该字符串将转换为bool,这将产生TRUE,并且只有$due === TRUE才能获得匹配1}}。
  • 如果$due是任何其他类型,它将被转换为字符串,并将两者作为字符串进行比较。只有$due === '0000-00-00 00:00:00'
  • 才能获得匹配

如果说你可能需要将这些值作为整数进行比较。这意味着您需要通过strtotime()传递任何字符串 - 包括$due,如果它是字符串。由于您未显示$due的示例值,因此无法提供准确的工作代码。

答案 2 :(得分:1)

我知道这是一个老问题,但这个答案可能会对某人有所帮助

strtotime返回成功时间戳,否则返回FALSE。

$test = strtotime($due);  
$due  = (!$test || $test < 0) ? '2000-00-00 00:00:00' : $due;

unset($test);

问候。

答案 3 :(得分:1)

我不知道为什么strtotime对我不起作用。可能是因为时区和其他东西。

一如既往,花哨的正则表达式就像魅力一样。我不知何故沉迷于它!

if(preg_match("/0{4}/" , $dbDateField))
{
    // no its not acceptable
}
else
{
    //ok
}

答案 4 :(得分:0)

strtotime(YourDate) != NULL也可以。

我正在处理数据库的DOB和DOM(婚姻日期)部分。似乎NULL默认保存日期为0000-00-00。说实话,这是一种愚蠢的事情。

或许将我的字段设为DATE字段而不是将其设为VARCHAR并在那里保存STRTOTIME值是我的愚蠢。

<?php 
    if(strtotime($dates->dom) != NULL) 
    {
        echo '<a href="' . base_url() . 'dates/dom/' . $dates->dom . '">' . date('j F, Y',strtotime($dates->dom)) . '</a>';
    } 
    else 
    { 
        print 'Not Listed Yet';
    } ?></strong>

答案 5 :(得分:0)

我想建议最简单的表格

if(!$due)
        $due =  strtotime('2000-00-00 00:00:00');

答案 6 :(得分:0)

以下是检查数据库中的datetime字段( mysql )是否为空或'0000-00-00 00:00:00'

的解决方案

使用starttime选择all为null或'0000-00-00 00:00:00'且endtime不是(null或'0000-00-00 00:00:00')

在数据库结束

select * from table where IFNULL(MONTH(starttime),0) >= 1 and IFNULL(MONTH(endtime),0) < 1;

php 结束

if((int)$starttime && !(int)$endtime){  ///  }