我如何检查用户无法在php中输入超过8小时的时间

时间:2018-03-08 05:16:11

标签: php

我的代码从时间和日期字段开始需要8个小时,但是当我给出两个例子时,我将其设置为上午9点到下午4点,然后就可以了。但是当我插入上午9点到早上6点时,它也允许那个差不多21个小时的差异所以我怎么能这样做呢?

<?php

elseif (isset($_POST['from']) && ($_POST['to']))
{
    $from_time = $_POST['from'];
    $to_time = $_POST['to'];
    $starttimestamp = strtotime($from_time);
    $endtimestamp = strtotime($to_time);
    $difference = abs($endtimestamp - $starttimestamp) / 3600;

    if ($difference > 8){
        echo "<script>alert('Oops!Your Daily Availablity Is More Than 8 Hours')</script>";
    }else{
        $query = "update donor SET from_time='" . $from_time . "',to_time='" . $to_time . "' where id=" . $_SESSION['id'];
    }

2 个答案:

答案 0 :(得分:0)

以24小时格式输入输入,包括DataTime。然后更改您的代码,如下所示。

我希望这段代码可以解决您的问题。

<?php
        date_default_timezone_set('Asia/Kathmandu'); 

        $datetime1 = new DateTime('2010-10-11 24:00:00'); // change date & time
        $datetime2 = new DateTime('2010-11-11 24:00:00');  //change date & time
        $interval = $datetime1->diff($datetime2);
        echo $interval->format('%Y-%m-%d %H:%i:%s')."<br />";

        $year =  $interval->format('%Y') * 365 * 24;
        $month = $interval->format('%m') * 30 * 24 ;
        $day = $interval->format('%d') * 24 ;
        $hour = $interval->format('%H');
        $minute = $interval->format('%i')/ 60;
        $seconds = $interval->format('%s')/(60*60);

        $time_diff = $year + $month + $day + $hour + $minute + $seconds;

        echo $time_diff;

        if ($time_diff > 8) {
            echo 'More then 8 hour';
        }else{
            echo 'ok';
        }
?>

答案 1 :(得分:0)

您必须在请求中指定完整日期时间。

  <?php
      $date = date("Y-m-d h:i:s", strtotime($row['time_d']))
  ?>

  <input type="time" class="form-control" values="<?= $date ?>" id="until_t" name="from"/>

然后你会在开始和结束时间之间得到正确的差异。