Ich habe derzeit PHP, das das aktuelle Datum / die aktuelle Uhrzeit wie folgt zurückgibt:
$now = date("Y-m-d H:m:s");
Was ich tun möchte, ist eine neue Variable $new_time
gleich $now + $hours
, wobei die $hours
Anzahl der Stunden zwischen 24 und 800 liegt.
Irgendwelche Vorschläge?
Antworten:
Sie können so etwas wie die
strtotime()
Funktion verwenden, um dem aktuellen Zeitstempel etwas hinzuzufügen.$new_time = date("Y-m-d H:i:s", strtotime('+5 hours'))
.Wenn Sie Variablen in der Funktion benötigen, müssen Sie doppelte Anführungszeichen verwenden, wie auch immer
strtotime("+{$hours} hours")
, wie besser Sie esstrtotime(sprintf("+%d hours", $hours))
dann verwenden.quelle
strtotime('+$hours hours')
Eine andere Lösung (objektorientiert) ist die Verwendung von DateTime :: add
Beispiel:
$now = new DateTime(); //current date/time $now->add(new DateInterval("PT{$hours}H")); $new_time = $now->format('Y-m-d H:i:s');
PHP-Dokumentation .
quelle
Sie können strtotime () verwenden , um dies zu erreichen:
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours
quelle
Richtig
Sie können strtotime () verwenden, um dies zu erreichen:
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', strtotime($now))); // $now + 3 hours
quelle
Sie können auch die Zeit im Unix-Stil verwenden, um Folgendes zu berechnen:
$newtime = time() + ($hours * 60 * 60); // hours; 60 mins; 60secs echo 'Now: '. date('Y-m-d') ."\n"; echo 'Next Week: '. date('Y-m-d', $newtime) ."\n";
quelle
Ähm ... deine Minuten sollten korrigiert werden ... 'i' ist für Minuten. Keine Monate. :) (Ich hatte das gleiche Problem auch für etwas.
$now = date("Y-m-d H:i:s"); $new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours
quelle
Ich benutze das, es funktioniert cool.
//set timezone date_default_timezone_set('GMT'); //set an date and time to work with $start = '2014-06-01 14:00:00'; //display the converted time echo date('Y-m-d H:i',strtotime('+1 hour +20 minutes',strtotime($start)));
quelle
Sie können lib Ouzo Goodies probieren und dies auf fließende Weise tun:
echo Clock::now()->plusHours($hours)->format("Y-m-d H:m:s");
APIs ermöglichen mehrere Operationen.
quelle
$date_to_be-added="2018-04-11 10:04:46"; $added_date=date("Y-m-d H:i:s",strtotime('+24 hours', strtotime($date_to_be)));
Eine Kombination aus den Funktionen date () und strtotime () reicht aus .
quelle
Ich mag diese eingebauten PHP-Datumsausdrücke wie
+1 hour
, aber aus irgendeinem Grund fallen sie mir die ganze Zeit aus dem Kopf. Außerdem schlägt keine der mir bekannten IDEs eine automatische Vervollständigung für solche Dinge vor. Und schließlich, obwohl mit denenstrtotime
und jonglierendate
Funktionen keine Raketenwissenschaft ist, muss ich ihre Verwendung jedes Mal googeln, wenn ich sie brauche.Deshalb mag ich die Lösung, die diese Probleme beseitigt (zumindest mildert). So kann das Hinzufügen von
x
Stunden zu einem Datum aussehen:(new Future( new DateTimeFromISO8601String('2014-11-21T06:04:31.321987+00:00'), new NHours($x) )) ->value();
Als netter Bonus müssen Sie sich keine Gedanken über die Formatierung des resultierenden Werts machen, er ist bereits im ISO8601-Format.
In diesem Beispiel wird die Baiser-Bibliothek verwendet. Weitere Beispiele finden Sie hier .
quelle
Für eine bestimmte DateTime können Sie Tage, Stunden, Minuten usw. hinzufügen. Hier einige Beispiele:
$now = new \DateTime(); $now->add(new DateInterval('PT24H')); // adds 24 hours $now->add(new DateInterval('P2D')); // adds 2 days
PHP: DateTime :: add - Handbuch https://www.php.net/manual/fr/datetime.add.php
quelle
für 2 Stunden zu "jetzt" hinzufügen
$date = new DateTime('now +2 hours');
oder
$date = date("Y-m-d H:i:s", strtotime('+2 hours', $now)); // as above in example
oder
$now = new DateTime(); $now->add(new DateInterval('PT2H')); // as above in example
quelle
Ich verwende die folgende Funktion, um den normalen Datum-Uhrzeit-Wert in das MySQL-Datum / Uhrzeit-Format zu konvertieren.
private function ampmtosql($ampmdate) { if($ampmdate == '') return ''; $ampm = substr(trim(($ampmdate)), -2); $datetimesql = substr(trim(($ampmdate)), 0, -3); if ($ampm == 'pm') { $hours = substr(trim($datetimesql), -5, 2); if($hours != '12') $datetimesql = date('Y-m-d H:i',strtotime('+12 hour',strtotime($datetimesql))); } elseif ($ampm == 'am') { $hours = substr(trim($datetimesql), -5, 2); if($hours == '12') $datetimesql = date('Y-m-d H:i',strtotime('-12 hour',strtotime($datetimesql))); } return $datetimesql; }
Es konvertiert Datum / Uhrzeit-Werte wie:
2015-06-04 09:55 AM -> 2015-06-04 09:55 2015-06-04 03:55 PM -> 2015-06-04 15:55 2015-06-04 12:30 AM -> 2015-06-04 00:55
Hoffe das wird jemandem helfen.
quelle
$now = date("Y-m-d H:i:s"); date("Y-m-d H:i:s", strtotime("+1 hours $now"));
quelle