我希望这一天只有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"
这可能吗?
答案 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
日期可以用正常的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"));