如果$ due等于无日期,我想要一个逻辑,那么我希望数据以2000开头。我的下面的代码不起作用。
if($due == '0000-00-00 00:00:00'){
$due = strtotime('2000-00-00 00:00:00');
}
如果$ due等于无日期,我想要一个逻辑,那么我希望数据以2000开头。我的下面的代码不起作用。
if($due == '0000-00-00 00:00:00'){
$due = strtotime('2000-00-00 00:00:00');
}
如果你是存储在适当的$的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');
}
但如果$由于来自你的分贝作为一个字符串,你会想strtotime()它:
$due = strtotime($due);
if($due == 0){
$due = strtotime('2000-00-00 00:00:00');
}
虽然知道时区。也就是说,的strtotime( '0000-00-00 00:00:00 UTC')!=的strtotime( '0000-00-00 00:00:00 EST')。这也可能会打破你的比较。
strtotime('0000-00-00 00:00:00') 可能会返回负值,null,false取决于PHP版本 – XuDing 2012-11-01 02:38:54
你需要确保你是在相同的格式比较值。与你当前所拥有的三件事情上会发生:
$due
是int
,你用0000-00-00 00:00:00
比较它的字符串将被转换为int
,这将导致0
,并且$due
会与0
相比。这只会导致匹配,如果$due === 0
。$due
是bool
,字符串将被转换为bool
,这将导致TRUE
,并且只有在$due === TRUE
时才会得到匹配项。$due
是任何其他类型,它将被转换为一个字符串,并将两个字符串进行比较。只有在$due === '0000-00-00 00:00:00'
的情况下,您才会得到一个匹配。如果会说你可能需要比较值作为整数。这意味着,你需要通过strtotime()
通过任何字符串 - 包括$due
,如果它是一个字符串。由于您未显示$due
的示例值,因此无法提供确切的工作代码。
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>
我想建议最简单的形式
if(!$due)
$due = strtotime('2000-00-00 00:00:00');
这里是解决检查数据库(MySQL的)如果时间字段为空或'0000-00-00 00:00:00'
选择所有与开始时间为空或'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){ /// }
我知道这是一个老问题,但这个答案可以帮助别人
的strtotime成功返回时间戳,否则返回FALSE。
$test = strtotime($due);
$due = (!$test || $test < 0) ? '2000-00-00 00:00:00' : $due;
unset($test);
关于。
我不知道为什么strtotime没有为我正确工作。可能是因为时区和其他东西。
一如既往的花式正则表达式就像一个魅力。我有点沉迷于它!
if(preg_match("/0{4}/" , $dbDateField))
{
// no its not acceptable
}
else
{
//ok
}
请提供'var_dump($ due);' – Wrikken 2012-01-13 16:38:48
这个日期来自哪里? – webbiedave 2012-01-13 16:38:54
如果您已从数据库检索到该值,则最好在查询中执行此逻辑。除非你在''if()' – 2012-01-13 16:40:35