如何在php中划分小时?

如何在php中划分小时?,php,date,datetime,Php,Date,Datetime,我已经试着为我的问题寻找答案很久了,但我还没有解决它。我是PHP新手 问题 将2:00除以2(hr/2)=1:00//格式h:i 谢谢。请记住,在任何编程/脚本语言中,划分时间都是微不足道的。因为如果我们谈论的是一个时间戳,那么划分它就没有意义了,因为时间戳是时间线上的一个特定点 另一方面,持续时间可以划分。然而,我不太确定php的API是否有任何用于持续时间处理的实现。您仍然可以继续使用自己的定制实现来处理时间间隔。它会像下面这样 <?php #We need at least

我已经试着为我的问题寻找答案很久了,但我还没有解决它。我是PHP新手

问题

将2:00除以2
(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所拥有的输入字符串。至少在你的回答中没有