-3

変数の日付を今日の日付と比較する次のコードを作成しました。変数の日付が今日の日付より大きい場合、エラー メッセージが表示されます。しかし、私の場合は正しく機能していません。

$form_data['trans_date'] = '12-11-2014';//Date to be compared with today's date in mm-dd-yyyy format
if(strtotime(date('m-d-Y')) < strtotime($form_data['trans_date'])) {
        echo 'Error';
    } else {
        echo 'Success';
    }

実際には、今日の日付は 12-11-2014、つまり 2014 年 12 月 11 日であり、今日の日付をそれ自体と間接的に比較しています。したがって、エラー メッセージは表示されませんが、エラー メッセージが表示されます。

タイムスタンプ値を出力してコードをデバッグしようとすると、次の値が得られました。

Today's date 1413097200
Trans date 1415779200

実際には、Trans Date タイムスタンプ値が今日の日付のタイムスタンプ値よりわずかに大きいため、エラーが発生しています。

しかし、比較している日付は今日の日付より大きくないため、そうすべきではありません。

では、この問題をどのように解決すればよいでしょうか。

4

1 に答える 1

-1

値はわずかではなく 1 か月異なります。

タイムスタンプを日付に戻すと、次のようになります。

Today:      Sun, 12 Oct 2014 07:00:00 GMT
Trans date: Wed, 12 Nov 2014 08:00:00 GMT

コードのバグは、strtotime が 'dmY' または 'm/d/Y' のいずれかを想定していることです。

于 2014-12-11T07:42:09.247 に答える