我的代码从时间和日期字段开始需要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'];
}
答案 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"/>
然后你会在开始和结束时间之间得到正确的差异。