如何在php中划分小时?
我已经试着为我的问题寻找答案很久了,但我还没有解决它。我是PHP新手 问题 将2:00除以2如何在php中划分小时?,php,date,datetime,Php,Date,Datetime,我已经试着为我的问题寻找答案很久了,但我还没有解决它。我是PHP新手 问题 将2:00除以2(hr/2)=1:00//格式h:i 谢谢。请记住,在任何编程/脚本语言中,划分时间都是微不足道的。因为如果我们谈论的是一个时间戳,那么划分它就没有意义了,因为时间戳是时间线上的一个特定点 另一方面,持续时间可以划分。然而,我不太确定php的API是否有任何用于持续时间处理的实现。您仍然可以继续使用自己的定制实现来处理时间间隔。它会像下面这样 <?php #We need at least
(hr/2)
=1:00//格式h:i
谢谢。请记住,在任何编程/脚本语言中,划分时间都是微不足道的。因为如果我们谈论的是一个时间戳,那么划分它就没有意义了,因为时间戳是时间线上的一个特定点 另一方面,持续时间可以划分。然而,我不太确定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');
我认为最安全的方法是转换为秒,并使用日期来显示它
$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”。
我想我们也可以在这里使用乘法。谢谢你的建议。这确实帮了我很大的忙。这是我为上述建议修改的代码
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"
希望这也会有帮助。谢谢,这很简单。使用strotime
$your_time = "12:00";
date_default_timezone_set ("UTC");
$secs = strtotime($your_time ) - strtotime("00:00:00");
echo date("H:i:s",$secs / 2);
您是说您需要除以2:00
?还是2.00
?(注意冒号和点)使用strotime()函数检查下面的答案如果时间是3:00,您希望它是1:30吗?在不容易划分的时间发生了什么?说1:15。你想用秒来写吗?那是2:00 2小时还是2点,如果是2小时,你可以把它转换成分钟,然后把它减半,然后再转换成h:i格式。这就是我需要的:)Thankshpp5+在DateTime
和DateInterval
中提供了方便的实现。我认为这些都比这个好。@RomeoSierra但是DateTime不支持OP所拥有的输入字符串。至少在你的回答中没有