簡體   English   中英

檢查$ date是否等於0000-00-00 00:00:00

[英]Check if $date is equal to 0000-00-00 00:00:00

我想要一個邏輯,如果$ due等於沒有日期,那么我希望數據從2000開始。我的代碼不起作用。

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

如果你在$ 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')。 這也可能會打破你的比較。

我不知道為什么strtotime對我不起作用。 可能是因為時區和其他東西。

一如既往,花哨的正則表達式就像魅力一樣。 我不知何故沉迷於它!

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

我知道這是一個老問題,但這個答案可能會對某些人有所幫助

strtotime返回成功時間戳,否則返回FALSE。

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

unset($test);

問候。

您需要確保以相同的格式比較值。 根據您目前的情況,將會發生以下三件事:

  • 如果$due是一個int ,那么你將它與0000-00-00 00:00:00進行比較的字符串將轉換為int ,這將導致0$due將與0進行比較。 如果$due === 0這只會導致匹配。
  • 如果$duebool ,則字符串將轉換為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 )中的datetime字段是否為空或'0000-00-00 00:00:00'

選擇all with starttime為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){  ///  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM