Ich möchte eine Variable, $uptime
die Sekunden ist, in Tage, Stunden, Minuten und Sekunden konvertieren .
Beispiel:
$uptime = 1640467;
Ergebnis sollte sein:
18 days 23 hours 41 minutes
Dies kann mit DateTime
Klasse erreicht werden
Verwenden:
echo secondsToTime(1640467);
# 18 days, 23 hours, 41 minutes and 7 seconds
Funktion:
function secondsToTime($seconds) {
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$seconds");
return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');
}
@
, wenn es als Argument an denDateTime
Konstruktor übergeben wird?@
ist Unix-Zeitstempel.Dies ist die Funktion, die um Tage umgeschrieben wurde. Ich habe auch die Variablennamen geändert, um den Code verständlicher zu machen ...
Quelle: CodeAid () - http://codeaid.net/php/convert-seconds-to-hours-minutes-and-seconds-(php)
quelle
Basierend auf der Antwort von Julian Moreno, aber geändert, um die Antwort als Zeichenfolge (nicht als Array) anzugeben, schließen Sie nur die erforderlichen Zeitintervalle ein und nehmen Sie nicht den Plural an.
Der Unterschied zwischen dieser und der am höchsten bewerteten Antwort ist:
Für
259264
Sekunden würde dieser Code gebenFür
259264
Sekunden würde die Antwort mit der höchsten Stimme (von Glavić) gebenIch hoffe das hilft jemandem.
quelle
Hier ist es eine einfache 8-Zeilen-PHP-Funktion, die eine Anzahl von Sekunden in eine von Menschen lesbare Zeichenfolge konvertiert, einschließlich der Anzahl von Monaten für große Sekunden:
PHP-Funktion Sekunden2human ()
quelle
Ergebnis wird 19 23:41:07 sein. Wenn es nur eine Sekunde länger als der normale Tag ist, erhöht es den Tageswert für 1 Tag. Aus diesem Grund wird 19 angezeigt. Sie können das Ergebnis für Ihre Anforderungen auflösen und beheben.
quelle
$uptime = gmdate("y m d H:i:s", 1640467); $uptimeDetail = explode(" ",$uptime); echo (string)($uptimeDetail[0]-70).' year(s) '.(string)($uptimeDetail[1]-1).' month(s) '.(string)($uptimeDetail[2]-1).' day(s) '.(string)$uptimeDetail[3];
diese Weise erhalten Sie auch Informationen zu Jahr und Monat.Hier gibt es einige sehr gute Antworten, aber keine davon hat meine Bedürfnisse abgedeckt. Ich habe auf Glavics Antwort aufgebaut , um einige zusätzliche Funktionen hinzuzufügen, die ich brauchte.
Sie können eine laufende Version des Codes sehen here.
quelle
Kurz, einfach, zuverlässig:
quelle
Der einfachste Ansatz wäre, eine Methode zu erstellen, die ein DateInterval aus dem DateTime :: diff der relativen Zeit in $ Sekunden von der aktuellen Zeit $ now zurückgibt, die Sie dann verketten und formatieren können. Beispielsweise:-
Verketten Sie nun Ihren Methodenaufruf mit dem Format DateInterval ::
Ergebnis:
quelle
Obwohl es eine ziemlich alte Frage ist, kann man diese nützlich finden (nicht geschrieben, um schnell zu sein):
Ergebnis:
quelle
quelle
quelle
Lösung, die 0 Werte ausschließen und korrekte Singular- / Pluralwerte festlegen sollte
quelle
Eine erweiterte Version von Glavićs hervorragender Lösung mit ganzzahliger Validierung, Lösung des 1-s-Problems und zusätzlicher Unterstützung für Jahre und Monate auf Kosten einer geringeren Computeranalyse, um mehr Menschenfreundlichkeit zu gewährleisten:
var_dump(secondsToHumanReadable(1*60*60*2+1));
->string(16) "2 hours 1 second"
quelle
Die von mir geschriebene Intervallklasse kann verwendet werden. Es kann auch in umgekehrter Weise verwendet werden.
Weitere Informationen finden Sie hier https://github.com/LubosRemplik/CakePHP-Interval
quelle
Mit DateInterval :
quelle
Hier ist ein Code, den ich gerne verwende, um die Dauer zwischen zwei Daten zu ermitteln. Es akzeptiert zwei Daten und gibt Ihnen eine schöne satzstrukturierte Antwort.
Dies ist eine leicht modifizierte Version des hier gefundenen Codes .
Quelle: https://gist.github.com/ozh/8169202
quelle
Alles in einer Lösung. Gibt keine Einheiten mit Nullen an. Erzeugt nur die von Ihnen angegebene Anzahl von Einheiten (standardmäßig 3). Ziemlich lang, vielleicht nicht sehr elegant. Definitionen sind optional, können sich jedoch in einem großen Projekt als nützlich erweisen.
Sie können gerne abstimmen, aber versuchen Sie es unbedingt in Ihrem Code. Es könnte genau das sein, was Sie brauchen.
quelle
Die Lösung für dieses Problem habe ich (damals, als ich PHP lernte) ohne In-Funktionen verwendet:
Obwohl dies eine alte Frage war, können neue Lernende, die darauf stoßen, diese Antwort nützlich finden.
quelle
quelle
Ich weiß nicht, warum einige dieser Antworten lächerlich lang oder komplex sind. Hier ist eine, die die DateTime-Klasse verwendet . Ein bisschen ähnlich wie Radzsergs Antwort. Dies zeigt nur die erforderlichen Einheiten an und negative Zeiten haben das Suffix 'vor' ...
BEARBEITEN: Wenn Sie das obige Beispiel auf weniger Variablen / Speicherplatz reduzieren möchten (auf Kosten der Lesbarkeit), finden Sie hier eine alternative Version, die dasselbe tut:
quelle
Ich bearbeite einen der Codes, damit er gut funktioniert, wenn ein negativer Wert auftritt.
floor()
Die Funktion gibt nicht die richtige Anzahl an, wenn der Wert negativ ist. Wir müssen also dieabs()
Funktion verwenden, bevor wir sie in derfloor()
Funktion verwenden können.$inputSeconds
Variable kann die Differenz zwischen dem aktuellen Zeitstempel und dem erforderlichen Datum sein.quelle
Eine Variation der Antwort von @ Glavić - diese versteckt führende Nullen für kürzere Ergebnisse und verwendet Pluralformen an den richtigen Stellen. Außerdem wird unnötige Präzision beseitigt (z. B. wenn der Zeitunterschied mehr als 2 Stunden beträgt, ist es Ihnen wahrscheinlich egal, wie viele Minuten oder Sekunden).
quelle
$ value stammen aus der Datenbank. Dieser Code befindet sich in Codeigniter. $ SESSION wird zum Speichern von Benutzerabonnements verwendet. es zwingend erforderlich ist. Ich habe es in meinem Fall verwendet, Sie können verwenden, was Sie wollen.
quelle
$value
das? Warum haben Sie eine Sitzung vorgestellt? Wie wird die richtige Zeichenfolge für Sekunden, Minuten und Stunden zurückgegeben?Dies ist eine Funktion, die ich in der Vergangenheit verwendet habe, um ein Datum von einem anderen zu entfernen, das mit Ihrer Frage zusammenhängt. Mein Prinzip bestand darin, zu ermitteln, wie viele Tage, Stunden, Minuten und Sekunden bis zum Ablauf eines Produkts noch übrig sind:
quelle