PHP,使用strtotime从日期-时间变量中减去分钟


PHP, use strtotime to subtract minutes from a date-time variable?

我需要从PHP中的日期-时间变量中减去45分钟。

代码:

$thestime = '2012-07-27 20:40';
$datetime_from = date("Y-m-d h:i",strtotime("-45 minutes",strtotime($thestime)));
echo $datetime_from;

返回结果CCD_ 1。

不过应该是2012-07-27 19:55。我该如何解决这个问题?

您应该做:

$datetime_from = date("Y-m-d H:i", strtotime("-45 minutes", strtotime($thestime)));

使用H而不是h意味着使用24小时格式,用前导零表示小时:0023

您可以在PHP日期函数文档中阅读更多关于这方面的内容。


还有一些更流畅的面向对象的方法,比如DateTime::sub:

$datetime_from = (new DateTime($thestime))->sub(DateInterval::createFromDateString('45 minutes'))->format('Y-m-d H:i')

或者Carbon库提供的更具表现力的方式,它扩展了PHP内置的DateTime类:

$datetime_from = (new Carbon($thestime))->subMinutes(45)->format('Y-m-d H:i');