我正在为我的客户创建一个脚本,该脚本从早上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
?>