现在制作一个DateTime对象并从现在开始计算1小时的PHP

时间:2013-02-14 01:56:29

标签: php mysql datetime

我有一些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();
}

2 个答案:

答案 0 :(得分: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

See it in action

答案 1 :(得分:0)

尝试对存储在MySQL中的值运行strtotime,然后向其中添加3600并将其与time()进行比较(如果修改后的值小于{,则希望允许访问{1}})