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

Har*_*ker 24 php

这是我正在使用的日期时间字符串的示例:

Tue May 15 10:14:30 +0000 2012
Run Code Online (Sandbox Code Playgroud)

这是我尝试在其上添加一小时:

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

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

谢谢.

Jon*_*Jon 66

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

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

请参阅DateInterval 构造函数文档:

格式以字母P开头,表示"期间".每个持续时间段由整数值表示,后跟句点指示符.如果持续时间包含时间元素,本说明书的该部分由字母T之前.

(重点补充)


Mar*_*aje 16

以前的答案有效.但是,我通常在外部托管的网站中使用datetime modify.查看php手册以获取更多信息.使用提出的代码,它应该像这样工作:

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

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

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

最好,


lor*_*o-s 7

使用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;
Run Code Online (Sandbox Code Playgroud)