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

时间:2011-11-17 14:51:39

标签: php date time

我真的很难将X分钟添加到日期时间,经过大量的谷歌和PHP手动阅读后,我似乎无处可去。

我的日期时间格式为:

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

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

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

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

13 个答案:

答案 0 :(得分:127)

$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');

ISO 8601 standard for duration是一个P{y}Y{m1}M{d}DT{h}H{m2}M{s}S形式的字符串,其中{*}部分被一个数字值替换,表示持续时间有多长。

例如,P1Y2DT5S表示1年,2天和5秒。

在上面的示例中,我们向PT5M构造函数提供DateInterval(或5分钟)。

答案 1 :(得分:93)

PHP's DateTime class有一个有用的modify方法,可以使用易于理解的文字。

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

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

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

答案 2 :(得分:30)

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

结果是

  

2011-11-17 05:21:00

现场演示是here

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

答案 3 :(得分:16)

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

strtotime('+59 minutes', strtotime('2011-11-17 05:05'));

我推荐使用DateTime类方法,仅由Tim发布。

答案 4 :(得分: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");

粗线,第3行,是补充。我希望这对一些人也有帮助。

答案 5 :(得分:4)

有点迟到的答案,但我会使用的方法是:

// Create a new \DateTime instance
$date = DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00');

// Modify the date
$date->modify('+5 minutes');

// Output
echo $date->format('Y-m-d H:i:s');

或者在PHP中> = 5.4

echo (DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00'))->modify('+5 minutes')->format('Y-m-d H:i:s')

答案 6 :(得分:3)

如果要提供包含分钟的变量。

然后我认为这是实现这一目标的好方法。

$minutes = 10;
$maxAge = new DateTime('2011-11-17 05:05');
$maxAge->modify("+{$minutes} minutes");

答案 7 :(得分:2)

使用strtotime("+5 minute", $date);

<小时/> 示例:

$date = "2017-06-16 08:40:00";
$date = strtotime($date);
$date = strtotime("+5 minute", $date);
echo date('Y-m-d H:i:s', $date);

答案 8 :(得分:1)

Brad和Nemoden在上面的回答中指出,strtotime()是一个很棒的功能。就个人而言,我发现标准的DateTime对象在许多用例中过于复杂。例如,我只想在当前时间增加5分钟。

我写了一个函数,它将一个日期作为带有一些可选参数的字符串返回:
1.)时间:字符串|例如:“+ 5分钟”(默认=当前时间)
2.)格式:字符串|例如:“Y-m-d H:i:s”(默认=“Y-m-d H:i:s O”)

显然,这不是一个功能齐全的方法。只是一个快速简单的功能,用于修改/格式化当前日期。

function get_date($time=null, $format='Y-m-d H:i:s O')
{
    if(empty($time))return date($format);
    return date($format, strtotime($time));
}

// Example #1: Return current date in default format
$date = get_date(); 

// Example #2: Add 5 minutes to the current date
$date = get_date("+5 minutes"); 

// Example #3: Subtract 30 days from the current date & format as 'Y-m-d H:i:s'
$date = get_date("-30 days", "Y-m-d H:i:s"); 

答案 9 :(得分:0)

执行此操作的另一个示例示例:(根据this for function.datethis for DateInterval更改您喜欢的时间和间隔格式):

(我还写了alternate form of the below function。)

// Return adjusted time.

function addMinutesToTime( $dateTime, $plusMinutes ) {

    $dateTime = DateTime::createFromFormat( 'Y-m-d H:i', $dateTime );
    $dateTime->add( new DateInterval( 'PT' . ( (integer) $plusMinutes ) . 'M' ) );
    $newTime = $dateTime->format( 'Y-m-d H:i' );

    return $newTime;
}

$adjustedTime = addMinutesToTime( '2011-11-17 05:05', 59 );

echo '<h1>Adjusted Time: ' . $adjustedTime . '</h1>' . PHP_EOL . PHP_EOL;

答案 10 :(得分:0)

不使用变量:

 $yourDate->modify("15 minutes");
 echo $yourDate->format( "Y-m-d H:i");

使用变量:

 $interval= 15;
 $yourDate->modify("+{$interval } minutes");  
 echo $yourDate->format( "Y-m-d H:i");

答案 11 :(得分:0)

一行mysql datetime格式

$mysql_date_time = (new DateTime())->modify('+15 minutes')->format("Y-m-d H:i:s");

答案 12 :(得分:0)

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

$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;