1

私はいくつかのPHPコードを持っています:

$time = new DateTime();
$sub = new DateInterval('P1H');
echo $time->sub($sub);

次のエラーが表示されます。

Fatal error: Uncaught exception 'Exception' with message 
'DateInterval::__construct(): Unknown or bad format (P1H)' 
in C:\xampp\htdocs\dailylog\test.php:4 Stack trace: #0 
C:\xampp\htdocs\dailylog\test.php(4): DateInterval->__construct('P1H') 
#1 {main} thrown in C:\xampp\htdocs\dailylog\test.php on line 4

私は何を間違っていますか?どうすればこれを機能させることができますか?

編集:私は実際にデータベースから入力された時間を取得し、+ 1 時間かどうかを確認すると思います。では、わかりづらくてすみません。

編集#2:私は自分の質問に答えることができないので...これが私が言おうとしていたことです:

私は自分でテストを行いましたが、完璧に動作します! コードは次のとおりです。

try {
    $time = new DateTime();
    $add = new DateInterval('PT1H');
    $test = new DateTime();
    $ing = new DateInterval('PT1H');

    $time->add($add);
    $test->add($ing);

    if ($time->format('g:i a') == $test->format('g:i a')) {
        echo 'Match';
    }
     else {
        echo 'No match';
    }
}
 catch (Exception $e) {
    echo $e->getMessage();
}
4

2 に答える 2

2

You have a format issue with your DateInterval value and a syntax error as well:

<?php
$time = new DateTime();
$sub = new DateInterval('PT1H'); // <-- error #1
$time->add($sub);                // <-- error #2
echo $time->format('c');         // Here you can format your time

See it in action

于 2013-02-14T02:00:16.357 に答える
0

strtotimeMySQL に保存されている値で実行してみてから、それに追加3600して比較しtime()ます (変更された値が より小さい場合にアクセスを許可する必要がありますtime()) 。

于 2013-02-14T01:59:31.110 に答える