web-dev-qa-db-ja.com

PHP、strtotimeを使用して日時変数から分を減算しますか?

PHPの日時変数から45分を差し引く必要があります。

コード:

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

結果を返す2012-07-27 07:55

そのはず 2012-07-27 19:55、しかし。どうすれば修正できますか?

16
Klausos Klausos

やったほうがいい:

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

または、PHPの組み込みCarbonクラスを拡張する DateTime ライブラリによって提供されるさらに表現力豊かな方法:

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