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?
$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');
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");
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.
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.
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')
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");
Verwenden Sie 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);
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");
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");
einzeiliges mysql-datetime-format
$mysql_date_time = (new DateTime())->modify('+15 minutes')->format("Y-m-d H:i:s");
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;
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;