这是我正在使用的日期时间字符串的示例:
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'));
但是第二行给出了无法转换的错误。
谢谢。
这是我正在使用的日期时间字符串的示例:
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'));
但是第二行给出了无法转换的错误。
谢谢。
您应该T
在时间规范部分之前添加一个:
$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->add(new DateInterval('PT1H'));
请参阅DateInterval
构造函数文档:
格式以字母 P 开头,表示“句号”。每个持续时间段由一个整数值表示,后跟一个时间段指示符。如果持续时间包含时间元素,则规范的该部分前面有字母 T。
(重点补充)
以前的答案工作正常。但是,我通常在我的外部托管网站中使用 datetime modify。查看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");
最好的,
使用strtotime()
:
$time = 'Tue May 15 10:14:30 +0000 2012';
$time = strtotime($time) + 3600; // Add 1 hour
$time = date('D M j G:i:s O Y', $time); // Back to string
echo $time;