计算当前时间与前几天之间的差异

时间:2017-03-19 07:58:21

标签: php

我已经在我的数据库中插入了time_of_start,如下所示:

$time_of_start = strtotime(date('H:i:s a'));

几天后我想检查current_time是same_time_of_start还是最多+2小时,所以我使用了以下代码:

$time_of_received = strtotime(date('H:i:s a'));
if ($time_of_received > $time_of_start) {
  $extra_used_time_by_minutes = round(($time_of_received - $time_of_start)/60);
  if ($extra_used_time_by_minutes > 120) {
    $message = 'something here...';
  } else {
    $message = 'something else here...';
  }
}

我认为这里有问题,谢谢你的帮助。

更多说明: 我正在为汽车租赁办公室提出申请,所以我想确保顾客在购买汽车的第一天同时归还汽车。

我也会给他一个2小时的免费时间,如果他免费通过两个小时,我会把它算作额外的一天。 例如:他下午4点开车,并在晚上7点后3天后将车返回。 希望足够清楚。

4 个答案:

答案 0 :(得分:1)

以下是使用时间的示例。您无需额外计算来确定用户是否正在使用宽限期。这应该非常简单,可以调整到程序中以使用数据库/输入字段而不是硬编码值。

这确定了返回时间,并在租借到数据库时使用。

// set up the requirements
$grace = 720; // 2 hours in seconds
$days = 5; // Determines how many days the rental is for.

$rental_time = time() + (60 * 60 * 24 * $days) + $grace;

因为您使用返回时间而不是开始时间设置时间戳,所以返回更容易管理。

$time_return_due = $time_from_database;

if (time() > $time_return_due) {
    // update the time stamp no added grace you already have it included
    $new_return_due = $time_return_due + (60 * 60 * 24);

    // apply new billing, send messages etc.
} else {
    // complete your returned 
}

答案 1 :(得分:0)

你可以使用php时间函数http://php.net/manual/en/function.time.php而不是strtotime(date('H:i:s a'));

另外,你对你的$消息做了什么?

答案 2 :(得分:0)

嗨,Mahmoud Yhya尝试使用echo ucfirst(substr($result['@attributes']['overflows'], strlen($name))) . ucfirst($name); 获取当前小时,date("H")将小时保存在数据库中。

答案 3 :(得分:0)

您可以使用日期功能将时差转换为分钟。

$diff = $time_of_received - $time_of_start;
$extra_used_time_by_minutes = date('i', $diff); // time in minutes