[英]how to divide hours in php?
我已經嘗試為我的問題尋找答案已經有一段時間了,但我還沒有解決。 我是 PHP 新手。
問題。
2:00 除以 2 (hr/2)
= 1:00 //格式 h:i
謝謝。
我認為最安全的方法是轉換為秒並使用日期來顯示它。
$time ="3:00";
list($hours, $minutes) = explode(":", $time);
$minutes += $hours*60;
$seconds = $minutes*60;
date_default_timezone_set ("UTC"); // makes sure there is no DST or timezone added to result
echo "new time: " . date("h:i", $seconds/2); // 01:30
你的問題是“h:i”格式,但它寫成“1:00”。
要獲得 1:00,您需要使用格式“G:i”。
https://3v4l.org/4MjVQ
根據記錄,在任何編程/腳本語言中划分時間都是微不足道的。 因為如果我們談論的是時間戳,那么划分是沒有意義的,因為時間戳是年表上的一個特定點。
另一方面,持續時間可以划分。 但是,我不太確定 php 的 API 是否有任何持續時間處理的實現。 您仍然可以繼續使用您自己的自定義實現來處理時間間隔。 它會是這樣的。
<?php
#We need at least two timestamps to get a duration
$time1 = new DateTime("2018-4-23 10:00:00");
$time2 = new DateTime("2018-4-23 11:00:00");
$durationInSeconds = ($time2->getTimestamp()) - ($time1->getTimestamp()); //Get the interval in seconds
#echo $durationInSeconds; // Gives you 3600 seconds
# Now you can divide these seconds into anything you prefer.
# Let's say I want two intervals. This means, I have to go for the timestamp in between the two. I could do that by simply adding half the amount of seconds
$halfDurationInSeconds = $durationInSeconds / 2;
$time1->add(new DateInterval("PT".$halfDurationInSeconds."S")); // adds 1800 secs
echo $time1->format('Y-m-d H:i:s');
它非常簡單。 使用 strtotime
$your_time = "12:00";
date_default_timezone_set ("UTC");
$secs = strtotime($your_time ) - strtotime("00:00:00");
echo date("H:i:s",$secs / 2);
我想我們也可以在這里使用乘法。 感謝上面的建議。 它確實幫助了我很多。 這是我針對上述建議修改后的代碼。
function multiplyTime ($multiple, $prescribeWorkingHrs) {
list($hours, $minutes) = explode(":", $prescribeWorkingHrs);
$minutes += $hours*60;
$seconds = $minutes*60;
$product = $seconds * $multiple;
return date("h:i", $product);
}
結果:
multiplyTime(0.75, "8:00") = "6:00"
multiplyTime(0.5, "8:00") = "4:00"
multiplyTime(0.25, "8:00") = "2:00"
希望這也會有所幫助。 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.