有很多关于此的问题,但我找不到确切的答案。
$datetime1 = new DateTime('2015-01-15');
$datetime2 = new DateTime(date('Y-m-d'));
$interval = $datetime1->diff($datetime2);
echo $interval->format('%m months');
今天是2015-05-11,这将返回3 months
。我希望它总是假设它是$datetime1
的月的第一天所以它应该实际返回4 months
我想我可以使用str_replace()
或其他一些字符串函数来删掉$datetime1
的那一天,但我假设有更优雅的方法?
由于
答案 0 :(得分:0)
如果' 2015-01-15'是可变的。你可以这样做:
$date = '2015-01-15';
$datetime1 = new DateTime( date('Y-m-01', strtotime($date)) );
或使用子字符串函数。
$date = '2015-01-15';
$datetime1 = new DateTime( substr($date, 0, 7).'-01' );
子串会更快,但strtotime()可以处理各种格式。