每天24小时至5小时的演出时间

时间:2018-01-02 11:32:05

标签: php date

我希望这一天只有5个小时。那么php的所有功能都将适用于新的日期。

这一天是5小时而不是24小时。

例如:

开始日期/时间:2017年8月14日上午8点 结束日期/时间:2017年10月14日下午1点

如果我在这个日期运行这个php命令" 2017年8月14日上午8点" $ date->修改(' +1天');

第二天应该是 开课日期/时间:2017年8月15日上午8点 结束日期/时间:2017年10月15日下午1点

另一个例子" 14 oct 2017 11 am" - >修改(' +3小时')给予" 15 oct 2017 9 am"

这可能吗?

2 个答案:

答案 0 :(得分:2)

是的,你可以,但是你需要编写自己的逻辑,看起来似乎是一个标准的内置对象,但它不会表现得如此:

<?php

class TinyDayDateTime extends DateTime {
    public function modify($modify) {
        // Replace line below with full `DateTime::modify()` implementation
        parent::modify('2017-10-15 13:00:00');
    }
}

$d = new TinyDayDateTime('2017-10-14 08:00:00');
var_dump($d);
$d->modify('+1 day');
var_dump($d);

也许您更愿意添加自己的自定义方法,例如TinyDayDateTime::nextTinyDay()

答案 1 :(得分:1)

我不能给你所有的代码,因为它可能会有很多ifs 但我认为你可以用数组作为“时钟”来做到这一点。

我用几个小时创建了数组,但我认为你需要几分钟(?) 如果时间大于12,我使用mod计算得到13的余数并将其加到8.

$clock =["h" => [ "8" => 8,"9" => 9,"10" => 10, "11" => 11,"12" => 12]];

$time = 11;

Echo $clock["h"][$time]. "\n"; // 11

// +3 hours
$time +=3;
If($time > 12) $time = $time%13 +8; // and add one to day in date or strtotime
Echo $clock["h"][$time]. "\n"; // 9

https://3v4l.org/LdcJY

日期可以用正常的strtotime和/或日期来完成,但是小时(和分钟)可能需要像上面那样的自定义时钟。

编辑:

更详细的代码。

$clock =["h" => [ "8" => 8,"9" => 9,"10" => 10, "11" => 11,"12" => 12]];

$dt = "14 oct 2017 11am";
$time = date("h", strtotime($dt));
$date = date("Y-m-d", strtotime($dt));

Echo $clock["h"][$time]. "\n";

// +3 hours
$time +=3;
If($time > 12){
    $time = $time%13 +8;
    $date = date("Y-m-d", strtotime($dt)+86400);
}
Echo $clock["h"][$time]. "\n";
Echo date("d M Y ga", strtotime($date ." ". $time . ":00"));

https://3v4l.org/Yl1YA