$datetime_from = '2013-08-27 14:17:00';
$datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from));
结果是:
$datetime_till = '1970-01-01 01:00:00'
预期的结果是
$datetime_till = '2013-08-27 15:02'
如何得到它?
它会像
$datetime_from = strtotime('2013-08-27 14:17:00');
$datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from));
您需要转换$datetime_from
为时间
Orelse你也可以试试(我不确定)
$dateTime = DateTime::createFromFormat('m/d/Y h:i', $datetime_from);
$datetime_from = $dateTime->format('U');
$datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from));
尝试-
$datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",strtotime($datetime_from)));
Use:
$datetime_from = strtotime('2013-08-27 14:17:00');
$datetime_till = date("Y-m-d H:i",$datetime_from+(45*60));
您应该使用DateTime类而不是旧的功能性 php。
$dateFrom = new \DateTime('2013-08-27 14:17:00');
$dateTill = new \DateTime('2013-08-27 14:17:00');
$dateTill->modify('+45 minutes');
// test if the dates are correct
echo $dateFrom->format('Y-m-d H:i:s'). ' - '.$dateTill->format('Y-m-d H:i:s');
您可以从 DateTime 类中受益的许多其他方法。
您可以使用 DateTime 对象以程序样式 PHP 执行此操作,如下所示:
$datetime_from = date_create('2013-08-27 14:17:00'); // Create a date object from the start date
$datetime_till = date_add($datetime_from, date_interval_create_from_date_string('45 minutes')); // Add the interval to the starting time
echo date_format($datetime_till, 'Y-m-d H:i'); // Format the date how you want it to be output
希望这可以帮助。
使用DateTime类进行日期/时间修改:
$datetime_from = new DateTime('2013-08-27 14:17:00');
$datetime_till = clone $datetime_from;
$datetime_till->modify('+45 minutes');
echo
'From: ' . $datetime_from->format('Y-m-d H:i:s') . "\n".
'Till: ' . $datetime_till->format('Y-m-d H:i:s');
输出将是:
From: 2013-08-27 14:17:00
Till: 2013-08-27 15:02:00
请注意,各种strtotime()示例在日期/时间差计算中不正确。2013-03-31 21:00
最简单的例子是和之间的差异2013-03-30 21:00
。这对于肉眼来说是精确的 1 天差异,但如果你减去这 2 个日期,你会得到82800
秒,即0.95833333333333
天。这是因为时间从冬季时间更改为夏季时间。DateTime正确处理闰年和时区。