01/01/1970,日期在symfony中为空


01/01/1970 when the dates are null in symfony

我需要我的showSuccess.php在生日为null时显示一个空字符串,而不是01/01/1970。我用下面的代码尝试了一下,但它不起作用:

<?php 
if (is_null($client_contact->getBirthday()) == TRUE) {
    echo ""; 
} else {
    echo $client_contact->getBirthday();
}
?>

我正在与mysql和symfony工作抱歉我的英语不好,我来自智利


我改变了类中的getBirthday()函数。用这个来解决:

public function getBirthday() {
    if ($this->_get('birthday') == NULL) {
        return NULL;
    } else {
        return date("d-m-Y", strtotime($this->_get('birthday')));
    }
}

谢谢大家的帮助!: D

如果你是var_dump($client_contact->getBirthday()),你会得到null还是总是得到一个日期?如果您正在使用ORM (Symfony通常使用Doctrine),那么它可能是您的问题的原因,并将null转换为0时间戳…

它不应该这样做,因为NULL != '1970-01-01',我同意你的观点,但是,如果你首先得到这个,然后看看学说手册为什么这样做。可能是模型配置问题

可以修改$client_contact对象背后的类代码吗?如果是,在该类中检查生日值是否为空。如果是,则返回空字符串,否则返回日期字符串。否则,您将受到Tim提供的解决方案的限制。

如果为null或0,则转换为Epoch (01/01/1970)

所以你可以使用

if ($client_contact->getBirthday() == "01/01/1970") 
{     
  echo "";  
} else {     
  echo $client_contact->getBirthday();
}

或:

$bday = $client_contact->getBirthday();
echo ($bday != "01/01/1970" && !is_null($bday)) 
      ? $bday
      : "";

但这不是最安全的方法。您需要使用strtotime

检查它是否等于1970年1月1日。不幸的是,任何生日落在这个日期也会被过滤……似乎没有其他的方法来区分日期和未设置。

<?php
if (($client_contact->getBirthday()) == "01/01/1970") {
    echo ""; 
} else {
    echo $client_contact->getBirthday();
}
?>