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

您的DateInterval值存在格式问题和语法错误:

<?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

看到它在行动

于 2013-02-14T02:00:16.357 回答
0

尝试仅strtotime在 MySQL 中存储的值上运行,然后添加3600到它并与之进行比较time()(如果修改后的值小于,您希望允许访问time()

于 2013-02-14T01:59:31.110 回答