【问题标题】:PHP - Calculating time in minutes between datesPHP - 以分钟为单位计算日期之间的时间
【发布时间】:2015-02-17 15:54:21
【问题描述】:

我希望创建一个脚本来计算承包商在其待机时间内工作了多少小时/分钟。

待机时间显示承包商的默认待机时间。

脚本需要计算承包商在这些小时内工作了多少分钟。如果工作进入新的一天,它也应该兼容(参见下面的示例)。

待机时间

Standby Time From  (Example: 18:00)
Standby Time To    (Example: 06:00)

旅行开始时间

19.30

站点到达时间

20.30

家乡时间

03:30

以上示例应返回 8 小时 0 分钟 STANDBY。我在下面解释了原因。

承包商在 19.30 上班。
承包商于 20.30 到达现场。
承包商在 03:30 到家。

这意味着承包商在 19.30 - 03:30(8 小时)的时间里都处于 STANDBY 状态。

任何帮助表示赞赏:)

编辑

我最初使用这个脚本,但是当工作时间变成两天时它就不起作用了。

// get travel start timestring
$travel_time = 70200; //19:30 in seconds

// get home time in seconds
$home_time = 12600; //03:30 in seconds

// get standby_from and standby_to in seconds
$standby_from = 64800; // 18:00 in seconds
$standby_to = 21600; // 06:00 in seconds

// check how many seconds we worked during standby hours
for($sec_of_day=$travel_time;$sec_of_day<=$home_time;$sec_of_day++)
{
    if($sec_of_day >= $standby_from && $sec_of_day <= $standby_to)
    {
        $seconds_sb++;
    }
}
echo $seconds_sb; // returns how many seconds

【问题讨论】:

    标签: php date logic


    【解决方案1】:
    $to_time = strtotime("2008-12-13 10:42:00");
    $from_time = strtotime("2008-12-13 10:21:00");
    echo round(abs($to_time - $from_time) / 60,2). " minute";
    

    一个简单的例子,你必须用 strtotime() 以秒为单位转换你的日期,并在两个时间戳之间做出区别。

    【讨论】:

    • 我认为您没有正确理解这个问题。
    猜你喜欢
    • 2011-11-29
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2021-05-12
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多