Fügen Sie ‘x’ Anzahl der bisherigen Stunden hinzu

Lesezeit: 4 Minuten

Fugen Sie x Anzahl der bisherigen Stunden hinzu
Jona Katz

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 + $hourswo $hours ist eine Anzahl von Stunden zwischen 24 und 800.

Irgendwelche Vorschläge?

  • strtotime() php.net/manual/en/function.strtotime.php

    Benutzer557846

    8. Juli 2012 um 20:14 Uhr

  • Ich bezweifle, ob es das ist, was Sie wollen. Ich möchte, dass Sie beachten, dass „m“ in „H:m:s“ den Monat auf Ziffer darstellt. Ich glaube, du wolltest “H:i:s” schreiben. Bitte kreuzen Sie an

    – Paulo

    14. August 2014 um 14:59 Uhr

1646253846 99 Fugen Sie x Anzahl der bisherigen Stunden hinzu
fdomig

Sie können so etwas wie die verwenden strtotime() Funktion, um etwas zum aktuellen Zeitstempel 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, dann like strtotime("+{$hours} hours")aber besser verwenden Sie strtotime(sprintf("+%d hours", $hours)) dann.

  • Das funktioniert, aber wenn ich die ‘5’ durch eine Variable ersetze, funktioniert es nicht richtig. strtotime('+$hours hours')

    – Jona Katz

    8. Juli 2012 um 20:30 Uhr

  • Meinst du nicht $new_time = date(“Ymd H:i:s”, strtotime(‘+5 hours’)? m ist Monat, i ist Minuten …

    – Richard

    14. August 2013 um 7:54 Uhr

1646253847 884 Fugen Sie x Anzahl der bisherigen Stunden hinzu
a11r

Eine andere Lösung (objektorientiert) ist die Verwendung von DateTime::add

Beispiel:

<?php

$now = new DateTime(); //now
echo $now->format('Y-m-d H:i:s'); // 2021-09-11 01:01:55

$hours = 36; // hours amount (integer) you want to add
$modified = (clone $now)->add(new DateInterval("PT{$hours}H")); // use clone to avoid modification of $now object
echo "\n". $modified->format('Y-m-d H:i:s'); // 2021-09-12 13:01:55

Skript ausführen


  • Kleiner Tippfehler hier, $date->format sollte wahrscheinlich $now->format sein

    – Patrick

    11. Januar 2015 um 22:18 Uhr

  • Obwohl ich den Link zur PHP-Dokumentation schätze, wäre es schön zu beschreiben, was die Parameter in Ihrem Beispiel bewirken. Du hast auf die verlinkt DateTime::add Funktion, die den Parameter von übernimmt DateInterval deren doc sagt dann, sich auf die von der unterstützten formate zu beziehen DateTime -Konstruktor, der dann auf “Datums- und Zeitformate” zeigt, die dann auf “Zeitformate”, “Datumsformate”, “Zusammengesetzte Formate” und “Relative Formate” verlinken. Keines davon scheint zu erwähnen P, obwohl ich es auf all diesen Seiten sehr gut hätte übersehen können. ich verstehe das T bedeutet Zeit, H Stunden, aber P?….

    – s.co.tt

    22. April 2021 um 23:55 Uhr

  • @s.co.tt php.net/manual/en/dateinterval.construct.php Das Format beginnt mit dem Buchstaben P für Punkt. Jede Dauerperiode wird durch einen ganzzahligen Wert dargestellt, gefolgt von einer Periodenbezeichnung. Wenn die Dauer Zeitelemente enthält, wird diesem Teil der Angabe der Buchstabe T vorangestellt.

    – a11r

    24. April 2021 um 11:28 Uhr

  • Danke! Ich habe es herausgefunden, und bitte beachten Sie, dass mich die PHP-Dokumentation irritiert hat, nicht das Poster. Aber ich bin froh, dass Ihre Antwort hier für die Nachwelt ist!

    – s.co.tt

    6. Juni 2021 um 16:44 Uhr

Fugen Sie x Anzahl der bisherigen Stunden hinzu
Zar

Sie können verwenden strtotime() um das zu erreichen:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours

  • @RichardDesLonde Wahrscheinlich, weil jeder das Codebeispiel des OP kopiert hat. 🙂

    – Zar

    14. August 2013 um 12:01 Uhr

  • Das hat bei mir nicht funktioniert, Rodrigo Prazims Antwort schon.

    – Lukas

    25. Mai 2019 um 22:22 Uhr

  • Ein nicht wohlgeformter numerischer Wert ist aufgetreten – funktioniert nicht

    Benutzer1239087

    2. April 2020 um 0:36 Uhr

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

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

  • schlechte Idee, Probleme mit Schaltjahren, Schaltsekunden, Sommerzeit usw.

    Benutzer557846

    8. Juli 2012 um 20:17 Uhr

  • @Dagon nein, es wird richtig berechnet.

    – Kasraf

    8. Juli 2012 um 20:19 Uhr

  • Schaltjahre werden mit dieser Methode berücksichtigt, Sommerzeit kann eingestellt werden, während das Datum erneut verwendet wird

    – Ankit

    8. Juli 2012 um 20:20 Uhr

Ähm … Ihre Minuten sollten korrigiert werden … ‘i’ steht für Minuten. Nicht 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

  • schlechte Idee, Probleme mit Schaltjahren, Schaltsekunden, Sommerzeit usw.

    Benutzer557846

    8. Juli 2012 um 20:17 Uhr

  • @Dagon nein, es wird richtig berechnet.

    – Kasraf

    8. Juli 2012 um 20:19 Uhr

  • Schaltjahre werden mit dieser Methode berücksichtigt, Sommerzeit kann eingestellt werden, während das Datum erneut verwendet wird

    – Ankit

    8. Juli 2012 um 20:20 Uhr

1646253847 628 Fugen Sie x Anzahl der bisherigen Stunden hinzu
Muhammad Wasim Akram

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

915970cookie-checkFügen Sie ‘x’ Anzahl der bisherigen Stunden hinzu

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy