1970年1月1日,当symfony中的日期为空时

时间:2011-10-11 18:26:44

标签: php mysql datetime symfony1 null

当生日为空时,我需要我的showSuccess.php显示一个空字符串,而不是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

4 个答案:

答案 0 :(得分:1)

如果您var_dump($client_contact->getBirthday())得到NULL,或者总是得到约会?如果您正在使用ORM(Symfony通常使用Doctrine),那么它可能是您的问题的原因并将NULLS转换为0时间戳......

它不应该这样做,因为NULL!='1970-01-01'并且我同意你,但是,如果你首先得到它,那么在学说手册中查看它为什么这样做。这可能是模型配置问题。

答案 1 :(得分:1)

如果它为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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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