在PHP中添加分钟到日期时间

Luk*_*e B 77 php time date

我真的很难将X分钟添加到日期时间,经过大量的谷歌和PHP手动阅读,我似乎没有得到任何地方.

我的日期时间格式是:

2011-11-17 05:05: year-month-day hour:minute

要添加的分钟数将只是0到59之间的数字

我希望输出与添加分钟的输入格式相同.

有人可以给我一个有效的代码示例,因为我的尝试似乎没有让我到任何地方?

Tim*_*per 150

$minutes_to_add = 5;

$time = new DateTime('2011-11-17 05:05');
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));

$stamp = $time->format('Y-m-d H:i');
Run Code Online (Sandbox Code Playgroud)

  • 'PT'代表什么? (11认同)
  • DateTime如何比strtotime更好? (2认同)
  • @NicholasJohn16 https://www.php.net/manual/en/dateinterval.construct.php >> 格式以字母 P 开头,表示“句点”。每个持续时间周期由一个整数值后跟一个周期指示符表示。如果持续时间包含时间元素,则规范的该部分前面带有字母 T。 (2认同)

Dan*_*iel 97

PHP的DateTime类有一个有用的修改方法,它采用易于理解的文本.

$dateTime = new DateTime('2011-11-17 05:05');
$dateTime->modify('+5 minutes');
Run Code Online (Sandbox Code Playgroud)

您还可以使用字符串插值或连接来对其进行参数化:

$dateTime = new DateTime('2011-11-17 05:05');
$minutesToAdd = 5;
$dateTime->modify("+{$minutesToAdd} minutes");
Run Code Online (Sandbox Code Playgroud)

  • 最短,最好的! (9认同)
  • 两个最重要的答案都很棒并且工作正常,但我更喜欢这个。只是看起来更简单、更直观。 (3认同)

Nem*_*den 35

$newtimestamp = strtotime('2011-11-17 05:05 + 16 minute');
echo date('Y-m-d H:i:s', $newtimestamp);
Run Code Online (Sandbox Code Playgroud)

结果是

2011-11-17 05:21:00

现场演示是 here

如果你还不熟悉strtotime,你最好php.net去发现它的强大功能:-)

  • 最懂一个 (2认同)

Bra*_*rad 18

您可以轻松地使用本机功能执行此操作:

strtotime('+59 minutes', strtotime('2011-11-17 05:05'));
Run Code Online (Sandbox Code Playgroud)

我推荐使用DateTime类方法,只是Tim发布的.


小智 9

我不知道为什么设置为解决方案的方法对我不起作用。所以我在这里发布对我有用的东西,希望它可以帮助任何人:

$startTime = date("Y-m-d H:i:s");

//display the starting time
echo '> '.$startTime . "<br>";

//adding 2 minutes
$convertedTime = date('Y-m-d H:i:s', strtotime('+2 minutes', strtotime($startTime)));

//display the converted time
echo '> '.$convertedTime;
Run Code Online (Sandbox Code Playgroud)


aca*_*ito 6

我认为在处理时区时这会有所帮助.我的修改后的解决方案基于@Tim Cooper的解决方案,上面是正确答案.

$minutes_to_add = 10;
$time = new DateTime();
**$time->setTimezone(new DateTimeZone('America/Toronto'));**
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$timestamp = $time->format("Y/m/d G:i:s");
Run Code Online (Sandbox Code Playgroud)

粗线,第3行,是添加.我希望这对一些人也有帮助.