5

以下のスクリプトで問題が発生しました。dbから取得されたと仮定し$exp_dateます。有効期限と今日の日付を比較して、メンバーシップがまだ有効かどうかを確認します。

表示するものはありませんが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';
}

誰でも手伝うことができますか?

4

5 に答える 5

6

説明書に追記strtotime()

m/d/yまたは形式の日付はd-m-y、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ (/) の場合、アメリカの m/d/y が想定されます。一方、セパレータがダッシュ (-) またはドット (.) の場合は、ヨーロッパの dmy 形式が想定されます。

潜在的なあいまいさを避けるために、ISO 8601 (YYYY-MM-DD) の日付またはDateTime::createFromFormat()可能な場合は使用することをお勧めします。

于 2013-03-13T07:25:10.067 に答える
0

以下のようにmysql自体で実行できます。

select if(cur_date()>expire_date,'expire','active') as status from tableName
于 2013-03-13T07:26:48.647 に答える
-1

このようにしてみてください

$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';
}
于 2013-03-13T07:27:34.807 に答える