如何从 PHP 中的日期时间减去 1 天 16 小时

How to subtract 1 day 16 hours from datetime in PHP

我正在尝试从给定的日期时间示例中减去日期和小时:

$schedule_date_time = '2016-02-29 08:30 PM';
echo date( "Y-m-d h:i a", strtotime("-1 day 16 hours", strtotime($schedule_date_time)) );

它给了我以下结果:2016-02-29 12:30 pm

哪个不正确...

但是如果我这样做:

$schedule_date_time = '2016-02-29 08:30 PM';
    echo date( "Y-m-d h:i a", strtotime("-1 day -16 hours", strtotime($schedule_date_time)) );

它给了我以下结果:2016-02-28 04:30 am

这是正确的,但我无法识别并在整数之前的字符串中加上减号。

使用date_sub/DateTime::sub.

$date = date_create("2016-02-29 08:30 PM") ;
date_sub($date, date_interval_create_from_date_string('1 day 16 hours'));
echo date_format($date, 'Y-m-d h:i a'); // 2016-02-28 04:30 am

如果您想增加而不是减去时间量,请改用 date_add

您可以将 DateTime::sub class 方法与 DateInterval class 一起使用,例如

$date2 = new DateTime('2016-02-29 08:30 PM');
$date2->sub(new DateInterval('P1DT16H'));
echo $date2->format("Y-m-d H:i:s");

DateTime对象在PHP中如此强大:

$dateTimeObj = DateTime::createFromFormat('Y-m-d H:i:s', '2016-04-04 15:20:00');
$dateTimeObj->modify('-1 day');
$dateTimeObj->modify('-16 hours');
echo $dateTimeObj->format('Y-m-d H:i:s');

对于未来的代码审阅者来说,它使用起来非常简单并且易于维护。