Wie konvertiert man currentTimeMillis zu einem Datum in Java?
Habe ich Millisekunden in bestimmten log-Datei generiert, in server, ich weiß auch, das Gebietsschema, von wo aus der log-Datei generiert wurde, mein problem ist die Umwandlung von Millisekunden in Datums im angegebenen format.
Die Verarbeitung von log geschieht auf dem server, die sich in verschiedenen Zeit-zone. Während der Konvertierung zu ""= SimpleDateFormat" - Programm ist der Einnahme Zeitpunkt von der Maschine als solche formatiert Datum repräsentieren nicht die richtige Zeit des Servers. Gibt es eine Möglichkeit, dies zu behandeln aus ?
long yourmilliseconds = 1322018752992l;
//1322018752992-Nov 22, 2011 9:25:52 PM
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS",Locale.US);
GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("US/Central"));
calendar.setTimeInMillis(yourmilliseconds);
System.out.println("GregorianCalendar -"+sdf.format(calendar.getTime()));
DateTime jodaTime = new DateTime(yourmilliseconds,
DateTimeZone.forTimeZone(TimeZone.getTimeZone("US/Central")));
DateTimeFormatter parser1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss,SSS");
System.out.println("jodaTime "+parser1.print(jodaTime));
Ausgabe:
Gregorian Calendar -2011-11-23 08:55:52,992
jodaTime 2011-11-22 21:25:52,992
Kommentar zu dem Problem
Nicht zu verwechseln mit der Locale Zeitzone. Völlig getrennt. Gebietsschema bestimmt die menschliche Sprache für die Namen der Monate und Tage, und kulturelle Normen, wie die Reihenfolge der Teile wie Monat, Tag, etc. Eine Zeitzone offset von der UTC plus Regeln für den Umgang mit Anomalien, wie Sommerzeit.
Das problem war, dass die Anzahl der Millisekunden, war ein Graf nicht aus 1970-01-01T00:00:00Z aber von einigen anderen moment?
InformationsquelleAutor der Frage Amit | 2011-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort Faisal Ashraf
Können Sie verwenden
java.util.Date
- Klasse, und verwenden Sie dannSimpleDateFormat
zum formatieren derDate
.InformationsquelleAutor der Antwort adatapost
Wenn der millis-Wert ist die Anzahl der millis seit Jan 1, 1970 GMT, der standard für die JVM, die dann unabhängig von der Zeitzone. Wenn Sie möchten, formatieren Sie es mit einer bestimmten Zeit-zone, können Sie einfach konvertieren Sie es in ein GregorianCalendar-Objekt, und legen Sie die Zeitzone. Danach gibt es zahlreiche Möglichkeiten, zu formatieren.
InformationsquelleAutor der Antwort Bill
tl;dr
Details
Den anderen Antworten verwenden veraltete oder fehlerhafte Klassen.
Vermeiden, das alte Datum-Zeit-Klassen wie java.util.Datum/.Kalender. Sie haben sich schlecht entwickelt, verwirrend und lästig.
java.Zeit
Den java.Zeit framework integriert in Java 8 und höher. Ein Großteil der Funktionalität ist zurück portiert auf Java 6 & 7 und weitere angepasst an Android. Gemacht von einigen der gleichen Leute da gemacht hatte Joda-Time.
Einer
Instant
einen moment auf der Zeitachse, UTC mit einer Auflösung von Nanosekunden. Seine Epoche ist der erste moment der 1970 in UTC angegeben.Vorausgesetzt, Ihre Eingabe-Daten ist eine Anzahl von Millisekunden seit 1970-01-01T00:00:00Z (nicht klar, in der Frage), dann können wir leicht instanziieren eines
Instant
.Den
Z
im standard - ISO 8601 formatierte Zeichenfolge ist die Abkürzung fürZulu
und bedeutet UTC.Anwenden einer Zeitzone mit einem die richtige Zeit zone name, um eine
ZonedDateTime
.Sehen diese code ausführen, live auf IdeOne.com.
Asia/Kolkata
Zeit-zone ?Ich vermute, Ihr hatte ein Indien Zeit-zone Auswirkungen auf Ihren code. Wir sehen hier, dass die Anpassung in
Asia/Kolkata
Zeit-zone macht die gleichen Zeit-of-day-Meldung,08:55
denen fünf und eine halbe Stunde vor unserer UTC-Wert03:25
.Standard zone
Können Sie die aktuelle Standard-Zeit-zone der JVM. Beachten Sie, dass der Vorgabewert kann sich ändern, jederzeit während der Laufzeit. Jeder code, der in jedem thread von jeder app innerhalb der JVM ändern kann, den aktuellen Standard. Wenn wichtig, bitten Sie den Benutzer für die gewünschte/erwartete Zeitzone.
Über java.Zeit
Den java.Zeit framework ist in Java 8 und höher. Diese Klassen verdrängen die lästige alte Vermächtnis Datum-Zeit-Klassen wie
java.util.Date
,Calendar
, &" = SimpleDateFormat
.Den Joda-Time Projekt, jetzt in Wartungsmodus, rät der migration auf die java.Zeit Klassen.
Um mehr zu erfahren, siehe die Oracle Tutorial. Und die Suche Stack Overflow für viele Beispiele und Erklärungen. Spezifikation JSR 310.
Mit einem JDBC-Treiber Einhaltung JDBC 4.2 oder höher verwenden, können Sie exchange java.Zeit Objekte direkt mit Ihrer Datenbank. Keine Notwendigkeit für Streicher oder java.sql.* Klassen.
Wo erhalten Sie die java.Zeit-Klassen?
Den ThreeTen-Extra Projekt erweitert die java.mal mit zusätzlicher Klassen. Dieses Projekt ist ein Testgelände für mögliche künftige Erweiterungen zu java.Zeit. Sie finden möglicherweise einige nützliche Klassen, die hier wie
Interval
,YearWeek
,YearQuarter
, und mehr.InformationsquelleAutor der Antwort Basil Bourque
Der einfachste Weg, dies zu tun, ist die Verwendung der Joda DateTime-Klasse und geben Sie sowohl den Zeitstempel in Millisekunden und den DateTimeZone Sie wollen.
Empfehle ich die Vermeidung der built-in-Java Date und Calendar-Klassen; Sie sind schrecklich.
InformationsquelleAutor der Antwort Cameron Skinner
Meine Lösung
InformationsquelleAutor der Antwort Siddarth Kanted
Dem "= SimpleDateFormat-Klasse hat eine Methode namens " SetTimeZone(TimeZone), die übernommen wird aus der DateFormat-Klasse. http://docs.oracle.com/javase/6/docs/api/java/text/DateFormat.html
InformationsquelleAutor der Antwort Jessica Brown
Einfachste Weg:
InformationsquelleAutor der Antwort Joaquin Iurchuk
Ich es so machen:
Können Sie auch
getDateInstance(int style)
mit folgenden Parametern:DateFormat.SHORT
DateFormat.MEDIUM
DateFormat.LONG
DateFormat.FULL
DateFormat.DEFAULT
InformationsquelleAutor der Antwort Yogesh Umesh Vaity
Unten ist meine Lösung, um Datum vom Millisekunden-bis-Datum-format. Verwenden Sie Joda-Bibliothek um diesen code zu erhalten ausführen.
InformationsquelleAutor der Antwort Archit