web-dev-qa-db-ger.com

Hinzufügen von Minuten zur Datumszeit in PHP

Ich bin wirklich fest entschlossen, X-Minuten zu einer Datumszeit hinzuzufügen, nachdem ich viel google'ing und PHP manuelles Lesen durchgeführt habe, komme ich scheinbar nicht weiter.

Das Datum und Uhrzeitformat ist: 

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

Die hinzugefügten Minuten sind lediglich eine Zahl zwischen 0 und 59

Ich möchte, dass die Ausgabe mit den hinzugefügten Minuten dem Eingabeformat entspricht.

Könnte mir jemand ein Beispiel für einen funktionierenden Code geben, da meine Versuche mich scheinbar nirgendwohin bringen?

68
Luke B
$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');
125
Tim Cooper

Die DateTime-Klasse von PHP hat eine nützliche change -Methode, die leicht verständlichen Text enthält.

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

Sie können auch die String-Interpolation oder Verkettung verwenden, um sie zu parametrisieren:

$dateTime = new DateTime('2011-11-17 05:05');
$minutesToAdd = 5;
$dateTime->modify("+{$minutesToAdd} minutes");
87
Daniel
$newtimestamp = strtotime('2011-11-17 05:05 + 16 minute');
echo date('Y-m-d H:i:s', $newtimestamp);

ergebnis ist 

2011-11-17 05:21:00

Live-Demo ist here

Wenn Sie sich mit strtotime noch nicht auskennen, gehen Sie besser zu php.net , um herauszufinden, wie mächtig es ist :-)

28
Nemoden

Sie können dies mit nativen Funktionen problemlos tun:

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

Ich würde jedoch die DateTime-Klassenmethode empfehlen, die gerade von Tim gepostet wurde.

16
Brad

Ich dachte, das würde einigen auch helfen, wenn sie sich mit Zeitzonen beschäftigen. Meine modifizierte Lösung basiert auf der Lösung von @ Tim Cooper, die richtige Antwort oben.

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

Die fette Linie, Zeile 3, ist die Addition. Ich hoffe, das hilft auch einigen Leuten.

6
acarito

Eine späte Antwort, aber die Methode, die ich verwenden würde, ist:

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

Oder in 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')
4
Peter

Wenn Sie eine Variable angeben möchten, die die Minuten enthält.

Dann denke ich, dass dies ein guter Weg ist, dies zu erreichen.

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

Verwenden Sie strtotime("+5 minute", $date);


Beispiel:

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

Wie von Brad und Nemoden in ihren Antworten oben erwähnt, ist strtotime () eine großartige Funktion. Ich persönlich fand das Standard-DateTime-Objekt für viele Anwendungsfälle zu kompliziert. Ich wollte nur 5 Minuten zur aktuellen Uhrzeit hinzufügen. 

Ich habe eine Funktion geschrieben, die ein Datum als String mit einigen optionalen Parametern zurückgibt:
1.) Zeit: Zeichenfolge | Beispiel: "+5 Minuten" (Standard = aktuelle Uhrzeit)
2.) Format: Zeichenfolge | Beispiel: "Y-m-d H: i: s" (Standard = "Y-m-d H: i: s O")

Offensichtlich ist dies keine voll funktionsfähige Methode. Nur eine schnelle und einfache Funktion zum Ändern/Formatieren des aktuellen Datums.

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"); 
1

Ohne eine Variable zu verwenden:

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

Bei Verwendung einer Variablen:

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

einzeiliges mysql-datetime-format

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

Ein weiteres Beispiel für eine Funktion, um dies zu tun: (Ändern der Zeit- und Intervallformate, je nach dem, was Sie möchten, entsprechend dies für function.date und dies für DateInterval ):

(Ich habe auch eine alternative Form der unten stehenden Funktion geschrieben.)

// 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;
0
FirstFraktal

Ich weiß nicht, warum der Lösungsansatz bei mir nicht funktioniert hat. Also poste ich hier, was für mich funktioniert hat, in der Hoffnung, dass es jedem helfen kann:

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