PHP |时间计算



我正在为我的客户创建一个脚本,该脚本从早上5:00到晚上24:00的收费为"x"。然后从中午12点到早上5点,收费为"y"。

假设电荷如下:

05:00 to 24:00 -> 1.00 $
24:00 to 05:00 -> 2.00 $

和客户端在23:00购买服务。我购买的服务需要两个小时才能完成,所以我想把昂贵时段的费用改成这样:

服务时间为2小时,从23:00开始,所以收费必须如下:

23:00 to 24:00 = 1 Hour x 1.00 $
24:00 to 01:00 = 1 Hour x 2.00 $

合计:3.00 $

客户还可以在购买时手动设置服务的开始时间。

问题是,我如何计算低成本时期的时间和高成本时期的时间?

有任何想法都将非常感谢:)

PN:还必须考虑客户端在23:00获得服务,服务将在06:00结束的情况。这意味着客户必须按低成本收费2小时,按高费率收费5小时。

亲切的问候Merianos Nikos

你只需要知道时间界限。我认为你甚至不需要date,除了可能获得当前的服务器时间。

你需要看看电荷槽的边界。

这似乎可以工作:

function get_charge($starttime, $proctime) {
    $slots = array(
        array(
            "begin" => 5,
            "end" => 24,    // any number larger than 23 will do
            "charge" => 1
        ),
        array(
            "begin" => 0, // 0 is 24, there will never be 24 (like on a clock)
            "end" => 5,
            "charge" => 2
        )
    ); // make sure you have no overlapping slots, and no missing slots either
    $charge = 0;
    for ($i = 0; $i < $proctime; $i += 1) { // get the charge for each hour
        $time = ($starttime + $i) % 24; // modulo 24 here so we go from 0 to 23
        foreach($slots as $slot) {
            if ($slot["begin"] <= $time && $time < $slot["end"]) {
                $charge += $slot["charge"];
            }
        }
    }
    return $charge;
}
var_dump(get_charge(23, 2)); // 3
var_dump(get_charge(7, 2)); // 2
var_dump(get_charge(1, 3)); // 6
var_dump(get_charge(23, 50)); // 50 hour job, because we can

试试这样:

<?php
$currentHour = date('G'); //gets the Hour of the day 24hour format 0-23
$currentMin = date('i'); //gets the minute
if ($currentHour > 5 && $currentHour < 23) {
    //code to charge X
}
//repeat for other times
//Probably use a external DB or file to track the times/rates
?>

相关内容

  • 没有找到相关文章

最新更新