我尝试从给定的日期时间示例中减去日期和小时:
$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
这是正确的,但我不可能在整数之前识别并在字符串中加上减号。
答案 0 :(得分:4)
使用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
。
答案 1 :(得分:2)
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');
它非常易于使用,并且对于未来的代码审查者来说非常易于维护。
答案 2 :(得分:0)
您可以将DateTime::sub
类方法与DateInterval
类一起使用,如
$date2 = new DateTime('2016-02-29 08:30 PM');
$date2->sub(new DateInterval('P1DT16H'));
echo $date2->format("Y-m-d H:i:s");