我目前正在为一家监控日产量数据的制造公司工作,但该公司遵循24小时的生产期限,该期限为6:00 AM
,但标准PHP
日期/午夜12:00之后的时间变化,是否可以更改PHP
日期/时间戳以在早上6点之后更改当前日期?
这是我到目前为止所做的,所以日期必须是今天的日期。
<?php
$dt = new DateTime("2017-07-07 00:00:00",
new DateTimeZone("Asia/Tokyo"));
echo "Start: ", $dt->format("Y-m-d H:i:s"), PHP_EOL;
$dt->add(new DateInterval("PT6H"));
echo "<br/>";
echo "End: ", $dt->format("Y-m-d H:i:s"), PHP_EOL;
?>
输出低于
Start: 2017-07-07 00:00:00
End: 2017-07-07 06:00:00
我想要实现的是下面的逻辑,这一天将在早上6:00开始,然后在第二天早上5:59结束。
Start: 2017-07-07 06:00:00 AM
End: 2017-07-07 05:59:00 AM
答案 0 :(得分:1)
不,您无法从根本上改变日历的工作方式。在我看来,你正在寻找的是一对代表一个班次的DateTime。正如你所描述的那样,它非常清楚。我只是使用一个数组来保持它们在一起:
$shift = array();
$format = 'Y-m-d H:i:s';
$shift['start'] = DateTime::createFromFormat($format, date('Y-m-d') . ' 6:00:00', new DateTimeZone("Asia/Tokyo"));
$shift['end'] = clone $shift['start'];
// Now add 23:59:59 to it
$shift['end']->add(DateInterval::createFromDateString('1 Day - 1 seconds'));
echo "Start: ", $shift['start']->format("Y-m-d H:i:s"), PHP_EOL;
echo "End: ", $shift['end']->format("Y-m-d H:i:s"), PHP_EOL;
echo PHP_EOL;
var_dump($shift);
以下是一个示例:https://3v4l.org/m1XgX