如何在这个日期时间字符串的时间上添加一个小时?

php
2022-08-30 11:47:25

以下是我正在使用的 datetime 字符串的示例:

Tue May 15 10:14:30 +0000 2012

以下是我试图添加一个小时的尝试:

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->add(new DateInterval('P1h'));

但是第二行给出了无法转换的错误。

谢谢。


答案 1

您应该在时间规范部分之前添加一个:T

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->add(new DateInterval('PT1H'));

请参阅构造函数文档:DateInterval

格式以字母 P 开头,表示“句点”。每个持续时间由一个整数值表示,后跟一个周期指示符。如果持续时间包含时间元素,则规范的该部分前面带有字母 T

(着重号后加)


答案 2

以前的答案工作正常。但是,我通常在外部托管的网站上使用日期时间修改。查看 php 手册了解更多信息。使用建议的代码,它应该像这样工作:

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->modify('+ 1 hour');

对于那些不使用面向对象的人,只需以这种方式使用它(第一行DateTime只是为了给这个线程带来一些新的东西,我用它来检查服务器时间):

$dt = new DateTime("@".$_SERVER['REQUEST_TIME']);  // convert UNIX epoch to PHP DateTime
$dt = date_modify($dt, "+1 hour");

最好


推荐