Konvertieren eines UNIX-Zeitstempels in eine formatierte Datumszeichenfolge


183

Mit PHP möchte ich UNIX-Zeitstempel in ähnliche Datumszeichenfolgen konvertieren: 2008-07-17T09:24:17Z

Wie konvertiere ich einen Zeitstempel wie 1333699439in 2008-07-17T09:24:17Z?

Antworten:


320

Versuchen Sie es gmdateso:

<?php
$timestamp=1333699439;
echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
?>

53
Bitte nicht, dass gmdate()das Datum / die Uhrzeit in GMT zurückgegeben wird. date()gibt das lokale Datum / die lokale Uhrzeit zurück.
Matt K

5
Der obige Kommentar macht in diesem Zusammenhang keinen Sinn. Wenn Sie das Datum mit dem zweiten Parameter als Zeitstempel verwenden, wie in der Antwort gezeigt, wird das Datum nicht in der lokalen Zeitzone gedruckt. Das Datum wird mit ignorierten Zeitzoneninformationen gedruckt, da der Zeitstempel keine Zeitzoneninformationen enthält. gmdate und date mit dem zweiten Zeitstempelparameter 1333699439 geben dieselbe Datums- und Uhrzeitangabe aus.
Tinus Tate

1
@MattK: Was Sinn macht, da Z UTC anzeigt. Tinus: Unix-Zeitstempel enthalten keine Zeitzonenversätze. dateund gmdate's Ausgabe wird basierend auf der TZ-Variablen unterschiedlich sein (mindestens auf * nix)
Gert van den Berg


Es wäre auch schön, wenn diese Antwort die Lösung für das gegenteilige Problem enthalten würde, nämlich das Konvertieren eines formatierten Datums in UNIX-Zeit.
Olle Härstedt

117

Verwenden Sie die Datumsfunktion date ( string $format [, int $timestamp = time() ] )

Verwenden Sie date('c',time())als Format ISO 8601 (hinzugefügt in PHP 5) zu konvertieren -2012-04-06T12:45:47+05:30

verwenden date("Y-m-d\TH:i:s\Z",1333699439), um zu bekommen2012-04-06T13:33:59Z

Hier sind einige der Formate, die die Datumsfunktion unterstützt

<?php
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
?>

Wie kann ich einen bestimmten Zeitstempel mit 'c' konvertieren? Zum Beispiel 1333699439
Utku Dalmaz

Dies funktioniert nicht Datum ("Ymd \ TH: i: s \ Z", 1333699439) Ich habe 2012-04-06EDT04: 03: 59-14400
Utku Dalmaz

@Ahmet - Beachten Sie die Verwendung von doppelten und einfachen Anführungszeichen bei der Definition der Zeichenfolge
Mark Baker

1
@ user2060451 alles, was ein Backslash vorangestellt ist, wird als
Literalzeichen

1
@ user2060451: Z soll die UTC-Zeit angeben (in diesem Fall sollte gmdate verwendet werden ...). Lesen Sie die ISO8601-Informationen zu Ihrer bevorzugten Forschungsressource.
Gert van den Berg

56

Angenommen, Sie verwenden PHP5.3, dann erfolgt die moderne Art der Datumsverarbeitung über die native DateTime-Klasse . Um die aktuelle Uhrzeit zu erhalten, können Sie einfach anrufen

$currentTime = new DateTime();

So erstellen Sie ein DateTime-Objekt aus einem bestimmten Zeitstempel (dh nicht jetzt)

$currentTime = DateTime::createFromFormat( 'U', $timestamp );

Um eine formatierte Zeichenfolge zu erhalten, können Sie diese aufrufen

$formattedString = $currentTime->format( 'c' );

Siehe die Handbuchseite hier


1
Wie kann ich damit einen bestimmten Zeitstempel konvertieren? Zum Beispiel 1333699439
Utku Dalmaz

@Norse Natürlich habe ich seinen Beitrag gelesen. Alle Informationen, die er brauchte, waren in meinem Beitrag. Er musste lediglich die PHP-Dokumente für das DateTime-Objekt lesen. Ich habe meinen Beitrag bearbeitet, um ihn noch klarer zu gestalten. Das DateTime-Objekt ist der richtige Weg in PHP und alle Neulinge sollten ermutigt werden, es zu verwenden. Bis jetzt bin ich der einzige, der diese Antwort gegeben hat. Übrigens finde ich Ihren Kommentar etwas aggressiv und nicht ganz im Sinne von SO.
Liquorvicar

@Ahmetvardar Siehe meine Bearbeitung, obwohl dies alles in den PHP-Dokumenten steht, zu denen ich einen Link bereitgestellt habe. Ich empfehle Ihnen dringend, das DateTime-Objekt zu verwenden. Es bietet eine hervorragende Unterstützung für Daten / Zeiten einschließlich Zeitzonen usw.
Liquorvicar

18

Es ist sehr wichtig, eine Standardzeitzone festzulegen, um das richtige Ergebnis zu erhalten

<?php
// set default timezone
date_default_timezone_set('Europe/Berlin');

// timestamp
$timestamp = 1307595105;

// output
echo date('d M Y H:i:s Z',$timestamp);
echo date('c',$timestamp);
?> 

Online-Konvertierungshilfe: http://freeonlinetools24.com/timestamp


2
In ISO8601 Zwird verwendet, um anzuzeigen, dass es eine UTC-Zeit ist, daher sollte die Zeitzone aufUTC
Gert van den Berg

11
<?php
$timestamp=1486830234542;
echo date('Y-m-d H:i:s', $timestamp/1000);
?>

6
Funktioniert ohne den Teil zum Teilen. Andernfalls ist das Datum standardmäßig 1970.
Script47


1

Ich fand die Informationen in dieser Konversation so hilfreich, dass ich nur hinzufügen wollte, wie ich sie mithilfe des Zeitstempels aus meiner MySQL-Datenbank und ein wenig PHP herausgefunden habe

 <?= date("Y-m-d\TH:i:s\+01:00",strtotime($column['loggedin'])) ?>

Die Ausgabe war: 2017-03-03T08: 22: 36 + 01: 00

Vielen Dank Stewe, du antwortest, war eine Eureka für mich.


0

Sie können wie tun .....

$originalDate = "1585876500";

echo $newDate = date("Y-m-d h:i:sa", date($originalDate));
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.