PHP date format /Datums(1365004652303-0500)/
Ich bin eine API aufrufen, von wo aus ich bin immer Datum /Date(1365004652303-0500)/
ich verstehe nicht, welches format das ist. Wie ist dieses Datum-format genannt? Ich war mir nicht sicher, was google für eine solche Art von format.
Kann mir jemand helfen, in immer das Datum in Y-m-d H:i:s
format?
API rufe ich auf .NET-server. Und wenn ich rufen Sie es mit PHP - file_get_contents
und json_decode
es gibt mir die folgende Datums-format erstellt Datum: /Date(1365004652303-0500)/
Es ist UNIX-time-stamp. Vor der Ausgabe Ihres JSON konvertieren von UNIX auf normale datetime string.
Ein UNIX-timestamp mit timezone offset
Nun, das ist eine option, die ich sehe, sowie
Bitte fügen Sie weitere Informationen, die API ist.
Die ungerade Sache über diese Zeitmarke ist, dass es in Millisekunden. Wenn man durch dividieren durch 1000, sehen Sie eine angemessene Anzahl. Das ist es, was hatte mich ratlos auf den ersten.
Ein UNIX-timestamp mit timezone offset
Nun, das ist eine option, die ich sehe, sowie
/Date(13650046523030500)/
und das ist dann, wo der Spaß beginnt 🙂Bitte fügen Sie weitere Informationen, die API ist.
Die ungerade Sache über diese Zeitmarke ist, dass es in Millisekunden. Wenn man durch dividieren durch 1000, sehen Sie eine angemessene Anzahl. Das ist es, was hatte mich ratlos auf den ersten.
InformationsquelleAutor Kalpesh | 2013-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst müssen Sie verstehen das format Sie haben
Dann haben Sie
Bauen Sie ein Format
Ausgabe
bitte beachten Sie, dass
0500
ist nicht timezone-lassen Sie sich nicht jemand verwirrenIch fügte
$dt->sub(new DateInterval('PT5H'));
nur nach$dt=Datetime::createFromFormat..
zu subtrahieren Sie 5 Stunden ab dem Datum und es funktioniert.behoben .....
Erweitert.
InformationsquelleAutor Baba
Probieren Sie es aus:
Gibt:
Seien Sie vorsichtig: dies führt zu falschen Umrechnungen, wenn Stunden Minuten enthält, wie 0930. Muss split-Stunden und Minuten und tun die Berechnung richtig.
InformationsquelleAutor Farkie
Let ' s break
/Date(1365004652303-0500)/
bis:Erste saite lässt sich ziemlich klar.
Die nächste große Nummer ist der epoch-Wert
Den -0500 stellt die Zeitzone, in der die Daten ursprünglich gespeichert werden. Es ist bezogen auf UTC und somit bezieht es sich auf die Eastern Standard Time.
BEARBEITEN
Zeitalter ist mit einer Millisekunde Genauigkeit. Versuchen Sie, diesen code:
Können Sie auch die Zeitzone für die Einstellung des Datums in Bezug auf Ihre eigenen. http://codepad.viper-7.com/RrSkMy
Y-m-d H:i:s
?Vielen Dank für Lehre mich, wie man auf Google 🙂
Keine Sorge, hier ist ein noch besserer Weg 😉
Überprüfen Sie die Bearbeiten
Es wird nie alt 😛
InformationsquelleAutor hjpotter92
Dieser timestamp ist in Millisekunden, das ist, warum es so groß ist.
Können Sie die PHP - Datum () aufrufen, um dieses format timestamp, wie Sie es wünschen. Nur durch dividieren durch 1000 erste. In standard-US-format, wäre es
$mydate = date('m d Y', $timestamp);
(wo $timestamp ist 1365004652303)
Formatieren in das format, das Sie angefordert (Y-m-d H:i:s), die Sie verwenden würden 'Y-m-d H:i:s', wie der format-string (Erster parameter). Hacken aus text, beginnend mit "-".
Diese Erträge 2013-04-03 11:57:32
Andere haben vorgeschlagen, die 0500 ist ein offset; wenn dem so ist, würden Sie anpassen möchten, $Stempel[0] entsprechend.
InformationsquelleAutor Scott C Wilson
Wenn Ihr Datum wie
/Date(-62135578800000)/
eine positive oder negative ganze Zahl ohne Zeitzone:InformationsquelleAutor Scott M. Sanders
Das folgende Beispiel verwendet die
preg_match()
und dieDateTime
Klasse:(integer) $matches[1];
scheiternWelche PHP-version?
32-bit-system ... (int) $matches[1]; müsste immer zurück
PHP_INT_MAX
Ich habe ein 64 bit system. Wusste nicht, dass das (int) und (integer) Verhalten sich anders
InformationsquelleAutor hek2mgl
Hatte ich etwas andere Erfahrung, die führte mich zu ein paar leichten änderungen zu Baba ' s ausgezeichnete Antwort.
Using Newtonsoft die JSON Bibliothek zum codieren von Nachrichten in .NET, die ich dann an unsere website schicken (PHP-Teil), ich bekomme einen Platz vor der timezone-offset, und keine +/- Zeichen.
Habe ich auch gesehen, die negativen zahlen von pre-Epoche stammt, was bedeutet, ich brauchte, um zu bieten für ein - Zeichen vor den Millisekunden Wert.
Veränderte ich die regex auf dieses und es funktioniert perfekt für mich:
^/Date(([-]?\d{10})(\d{3})\s?([+-]?\d{4}))/$
Den beiden Unterschiede sind
[-]?
vor der 10-stelligen Millisekunden-Wert, und\s?
bevor die Zeitzone offset.Ich würde dies als einen Kommentar auf Babas Antwort, aber mir fehlt der Ruf nicht mir erlauben. Ich hoffe, das ist angemessen für mich, hier zu posten, da ich dachte, es könnte nützlich sein.
InformationsquelleAutor Dan Hobbs
Babas Antwort ist sehr hilfreich, aber es deckt nicht die 3 Fälle, die ich brauche:
Dies ist, was ich verwenden für das erhalten der timestamp:
Wieder, wie Ghigo angemerkt, dies ist nicht korrekt, wenn der offset enthält Minuten, aber es funktioniert für meinen Fall.
Vielen Dank für die rezension @Luceos. Ich habe keine neue Frage, ich bin das hinzufügen von mehr Informationen, die nicht anwesend war, die in den vorhergehenden Antworten noch Kommentare, und ich glaube, es könnte für andere Nutzer hilfreich sein.
Ihre Antwort darauf ist eine neue Entwicklung der Frage. Antworten sollten nur die Antwort auf die Frage gegeben. Sie können eine neue Frage mit Ihrer situation und beantworten Sie sich selbst. Dies ist erlaubt, wenn Sie selbst beantwortet Fragen aufwerfen Wert für die Gemeinschaft.
InformationsquelleAutor Rumyana Ruseva
Dies ist, was ich verwenden, um zu analysieren, Zeitstempel aus einem Xero-API. Es entfallen:
Code:
InformationsquelleAutor Jason