$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
转换为时间
或者你也可以尝试喜欢(我不确定(
$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)));
你应该使用 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
希望这有帮助。
Use:
$datetime_from = strtotime('2013-08-27 14:17:00');
$datetime_till = date("Y-m-d H:i",$datetime_from+(45*60));
使用日期时间类进行日期/时间修改:
$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
有效的 modify(( 格式在日期和时间格式中进行了说明。
请注意,各种 strtotime(( 示例在日期/时差计算中是不正确的。最简单的例子是2013-03-31 21:00
和2013-03-30 21:00
之间的差异。肉眼正好相差 1 天,但如果你减去这 2 个日期,你会得到 82800
秒,也就是 0.95833333333333
天。这是因为从冬季到夏令时的时间变化。日期时间可以正确处理闰年和时区。