计算2 date()之间的时差

时间:2015-05-07 08:34:32

标签: php

我有一个输入字段,我在文字的截止日期输入。例如,“5分钟”,“2天”,“6周”,“8个月”。我想让程序做的是计算截止日期结束所需的时间。并且如果该截止日期即将结束,例如,如果已经过了80%的给定时间。

我在想像php那样在几秒钟内分割给定时间,然后检查在这些秒内适合多少分钟,小时或天,然后将其放入dateTime。像当前日期+输入= futureDate。

我知道我可能不应该使用百分比,这只是一个例子。

<input type="text" name="getFutureTime">

<?php
    $futureTime = $_POST['getFutureTime'];
    $dateNow = date('d-m-Y H:i:s');

    if($futureTime > $dateNow){
        //Calculate
        echo "Deadline has passed";
    }else if (($futureTime / 100 * 80) < $dateNow){
        //Calculate
        echo "Deadline is almost passed";
    }
?>

3 个答案:

答案 0 :(得分:0)

这里的值是string,你不能比较那样。首先将它们转换为timestamp。试试 -

$futureTime = strtotime($_POST['getFutureTime']);
$dateNow = time();

答案 1 :(得分:0)

我有一个解决方案,计算以后的日期:)...,将其复制到localhost并运行:) diff

$d1=new DateTime("now");

$d2=new DateTime($_POST['DateInput']);
$diff = $d1->diff($d2);
echo "<pre>";
print_r($diff);
echo "</pre>";
$date = $diff->format('%d'); //It date
$year = $diff->format('%y'); //It year
$month = $diff->format('%m'); //It month

echo $diff->format('%a'). "<br/>";

foreach($diff as $key => $value){
    echo $key . "<br/>";
    echo $value;
}
$value = strtotime('14/12/2012');
echo($value);

<强>更新

  

$ diff-&gt;格式('%a')//从现在开始的日期示例10/12/2015 - 2015年10月5日= 7

     

$ diff-&gt;格式('%a')是7

答案 2 :(得分:0)

试试这个会起作用:

$date_a = new DateTime('2015-05-07 13:03:48');
$date_b = new DateTime('2015-02-04 13:03:41');
$interval = date_diff($date_a,$date_b);
echo $interval->format('%m Months %d Days %h Hours %i Minutes %s Seconds');