2013-03-13 93 views
2

我在下面的腳本中遇到問題,假設$exp_date從db中檢索,我想比較過期日期和今天的日期,以檢查成員資格是否仍然存在。php strtotime不起作用

沒有什麼可顯示,但只有Time Expired,代碼有什麼問題?

從db的expiry列中檢索到的數據被設置爲varchar(它由前同事構建)。

$exp_date = "22/01/2014"; 
$todays_date = date("d/m/Y"); 
$today = strtotime($todays_date); 
$expiration_date = strtotime($exp_date); 
echo $expiration_date.' | '.$today.'<br>'; 
if($expiration_date > $today){ 
    echo 'Still Active'; 
} else { 
    echo 'Time Expired'; 
} 

任何人都可以幫忙嗎?

+0

以dB爲你存儲有效期爲這樣的.. ?? d/M/Y – Gautam3164 2013-03-13 07:24:04

+0

我建議ü使用這種格式存儲的時間和日期 「Y-M-d H:我:■」。更容易在後期工作。只是我的意見 – s3polz 2013-03-13 07:32:04

+0

閱讀更多關於此http://php.net/manual/en/function.strtotime.php – 2013-03-13 07:38:43

回答

5

這裏是工作的代碼

<?php 
$exp_date = "22/01/2014"; 
    $exp_date = str_replace('/', '-', $exp_date); 
    $todays_date = date("d-m-Y"); 
    $today = strtotime($todays_date); 
    $expiration_date = strtotime($exp_date); 

    echo $expiration_date.' | '.$today.'<br>'; 

    if($expiration_date > $today){ 
     echo 'Still Active'; 
    } else { 
     echo 'Time Expired'; 
    } 
?> 

事實上的strtotime()不使用格式'd/m/Y'

希望它可以幫助你。

4

關於strtotime()手冊的說明。在m/d/yd-m-y格式

日期是由尋找的各種組件之間的分隔符消除歧義:如果分離器是斜線(/),則美國米/ d假定/ Y;而如果分隔符是破折號( - )或點(。),則假定歐洲的d-m-y格式。

爲避免潛在的歧義,最好在可能的情況下使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()

0

你可以做到這一點在MySQL本身象下面這樣:

select if(cur_date()>expire_date,'expire','active') as status from tableName 
0

嘗試這樣

$todays_date=date('d/m/y'); 
$tempArr=explode('/', "22/01/2014"); 
$exp_date = date("d/m/y", mktime(0, 0, 0, $tempArr[1], $tempArr[0], $tempArr[2])); 
$expiration_date = strtotime($exp_date); 

echo $expiration_date.' | '.$today.'<br>'; 

if($expiration_date > $today){ 
    echo 'Still Active'; 
} else { 
    echo 'Time Expired'; 
} 
0
<?php 
    $exp_date = "22/01/2014"; 
    $exp_date = str_replace('/', '-', $exp_date); 
    $todays_date = date("d-m-Y"); 
    $today = strtotime($todays_date); 
    $expiration_date = strtotime($exp_date); 

    echo $expiration_date.' | '.$today.'<br>'; 


    if($expiration_date > $today){ 
     echo 'Still Active'; 
    } else { 
     echo 'Time Expired'; 
    } 
?> 
+0

上面的例子應該工作,顯然strtotime不適用於d/m/y日期格式僅供參考, – Jijo 2017-02-07 19:26:41