Frage an timestamp, php, java – Wie konvertiert man einen Java-Zeitstempel in einen PHP-Zeitstempel?

7

Wie kann ich einen Java-Zeitstempel wie diesen konvertieren?1335997853142 zu einem Format, das PHP lesen kann?1335997853142 sollte sein02 May 2012 22:30:53.

Aber was auch immer ich versuche, ich bekomme Fehler oder PHP sagt1970-01-01 01:00:00 oder2038-01-19 04:14:07

PLS helfen !!! Ich suche über 1,5h nach einer Lösung!

Benutzenjava.util.Calendar. Das ist alles, was Sie für diese großartige Frage bekommen. Torious
Der Java-Zeitstempel ist Millisekunden von der Linux-Zeit entfernt, PHP ist Sekunden von der Linux-Zeit entfernt. Teilen Sie die Java-Zeit durch 1000, um die PHP-Zeit zu erhalten. Jordonias
@Torious: Ich möchte kein Java verwenden - ich konvertiere 1220 Werte von einer XML-Datei mit PHP nach MySQL user1373728

Deine Antwort

8   die antwort
1

sollte 3 letzte Nummer entfernen. Verwenden Sie keine Division, da dies die Float-Nummer zurückgibt.

1

den Sie haben, ist in Millisekunden, wenn er in Sekunden sein sollte

<code>$java_time = 1335997853142;
$php_time = $java_time / 1000;
$today = date("d M Y G:i:s", $php_time);
</code>

Ausgabe

<code>02 May 2012 22:30:53
</code>
Sind Sie sicher, dass Sie die Einträge ordnungsgemäß aus XML abrufen? Jordonias
Dies ergibt für alle Werte im Array: 25 Jan 1970 20:31:23 user1373728
Mir fehlten einige Semikolons, die jetzt repariert wurden Jordonias
0
6

Epoche (1970-01-01 00:00:00 GMT)

WelchePHP unterstützt auch außer in Sekunden, so sollte das folgende in PHP funktionieren:

<code>date('choose your format', javaMilliseconds / 1000);
</code>
wie Mark Reed sagt auch date_default_timezone_set ("UTC"); pstanton
0

Benutzen

<code>$time = date("whatever you need", $javatime / 1000);
</code>
Ich habe folgendes verwendet: Datum ('Y-m-d H: i: s', $ Werte ['Datum'] / 1000); // 1970-01-25 21:31:23 this: date ('Ymd H: i: s', (int) $ values ​​['date'] / 1000) // 1970-01-25 21:31:23 this: date ('U = Jmd H: i: s', (int) $ values ​​['date']) // 2038-01-19 04:14:07 this: date ('U = Jmd H: i: s ', (int) $ values ​​[' date ']) // Warnung: date () erwartet, dass Parameter 2 lang ist wtf ist falsch?!? user1373728
8

PHP-Zeitstempel sind Sekunden und keine Millisekunden.

<code>echo gmdate("d M Y H:i:s",1335997853);
</code>

Das gibt aus02 May 2012 22:30:53.

verdammt!! ok, jetzt klappt es - mit all deinen lösungen! Vielen Dank!! Problem war: die Zeichenfolge hat Leerzeichen (weiß nicht warum!). nach einem trim () hat alles geklappt. sorry jungs aber danke euch allen! user1373728
1

Java-Zeitstempel: 1396959462222

PHP-Zeitstempel: 1396959462

Das Teilen durch 1000 ergibt nicht genau die richtige Antwort, da es einen Doppel- oder Gleitkommawert ergibt, d. H. 1396959462.222, was nicht das ist, was wir wollen. Wir benötigen hier eine Ganzzahl wie 1396959462. Der richtige Weg, um Java-Zeitstempel in PHP-Zeitstempel umzuwandeln, ist die Verwendung von intval ():

<code>$php_timestamp = intval($java_timestamp/1000);
</code>

In einem realen Beispiel in einer meiner Android-Apps, in denen ich einen Java-Zeitstempel an einen PHP-Server sende, mache ich das wie oben erwähnt. Außerdem füge ich aus Sicherheitsgründen ein preg_replace () hinzu, um sicherzustellen, dass der Hackcode, der in dieses Feld eingefügt wurde, entfernt wird:

<code>$php_timestamp = intval(preg_replace('/[^0-9]/', '', $java_timestamp)/1000);
</code>
1

Unix Sekunden, also dividiere durch 1000:

<code>  print(date("r", 1335997853142/1000)
</code>

Verwandte Fragen