php - 添加两个小时的日期变量

时间:2011-10-18 17:57:45

标签: php date add strtotime

我想为我所拥有的日期/时间变量添加3分钟,但我不知道该怎么做。 我从这样的字符串中创建了变量:(它采用RFC 2822日期格式btw)

$date = 2011-10-18T19:56:00+0200

我使用此命令将该字符串转换为日期:

$time = date_format(DateTime::createFromFormat("Y-m-d\TH:i:sO", $date), "G:i")

现在,我想为该变量添加3分钟,但我不确定如何。 我以前在我的脚本中使用了以下命令,但这适用于当前日期/时间,所以我不确定如何将它用于我的时间变量:

$currenttime = date('G:i', strtotime('+2 hours'));

那么,如何在$ time变量中添加三分钟?

5 个答案:

答案 0 :(得分:9)

echo $idate="2013-09-25 09:29:44";

$effectiveDate = strtotime("+40 minutes", strtotime($idate));

echo date("Y-m-d h:i:s",$effectiveDate);

答案 1 :(得分:5)

使用strtotime的第二个参数提供参考时间:

$date_rfc2822 = '2011-10-18T19:56:00+0200';
$dateTime = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date_rfc2822);
echo date('G:i', strtotime('+2 hours', $dateTime->getTimestamp()));

答案 2 :(得分:5)

由于您已经使用了DateTime对象,请坚持使用它:

$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
$three_minutes = $time->add(new DateInterval('P2H'));
                                               ^^--two (2) hours (H)

答案 3 :(得分:1)

  

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

http://www.php.net/manual/en/dateinterval.construct.php

据说我对类似问题的解决方案是:

// pretend that $date is what you got from mysql
// which is like 2013-02-12 23:08:17
echo "<br>";
echo $date;
$time = DateTime::createFromFormat("Y-m-d H:i:s", $date);
echo "<br>";
echo $time->format('H-i-s');
$time->add(new DateInterval('PT2H'));
echo "<br>";
echo $time->format('H-i-s');
// Outputs:
// 2013-02-12 23:08:17
// 23-08-17
// 01-08-17

在使用P类时添加DateInterval,在时间条目之前添加T。对于您的情况,您需要使用PT3M添加3分钟。我试图增加2个小时,我做的是$time->add(new DateInterval('PT2H'));

如果你看一下间隔规格:

Y   years
M   months
D   days
W   weeks. These get converted into days, so can not be combined with D.
H   hours
M   minutes
S   seconds
M的{​​p> monthsM的{​​{1}}。这就是为什么前面有minutes的原因。

至少那是我想要相信的......'O_O

答案 4 :(得分:0)

//set the date and time

$start = '2017-01-01 14:00:00';

//display the converted time you want to add for ex. 1 hour and 20 minutes 

echo date('Y-m-d H:i:s',strtotime('+1 hour +20 minutes',strtotime($start)));