PHP将日期设置为在特定时间结束

PHP将日期设置为在特定时间结束,php,date,Php,Date,我目前在一家制造公司的系统中工作,该系统监控每日输出数据,但该公司遵循24小时的生产持续时间,日期在上午6:00结束,但标准PHP日期/时间在午夜12:00后更改,是否可以更改PHP日期/时间戳以在上午6点后更改当前日期 编辑 这是我到目前为止的资料,所以日期必须是今天的日期 <?php $dt = new DateTime("2017-07-07 00:00:00", new DateTimeZone("Asia/Tokyo")); echo "Start: ", $

我目前在一家制造公司的系统中工作,该系统监控每日输出数据,但该公司遵循24小时的生产持续时间,日期在上午6:00结束,但标准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;

  ?>
我想要实现的是下面的逻辑,一天将从早上6:00开始,然后在第二天早上5:59结束

   Start: 2017-07-07 06:00:00 AM
   End: 2017-07-07 05:59:00 AM

不,你不能从根本上改变日历的工作方式。在我看来,你要寻找的是一对代表一次转换的日期时间。正如你所描述的,这很清楚。我将使用一个数组将它们保持在一起:

$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);

下面是一个示例:

如果您只是通过date\u modify向date的结果添加了6个小时,该怎么办?一般来说,要完成日期范围,您需要一个开始和结束。我已经开发了很多涉及从到的日期/时间窗口的调度应用程序,您需要一对。这里的优点是不会丢失起始对象,并且每个对象都是单独的。
$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);