Umwandlung von string zu Datum mit timezone
Ich habe einen string in dem Muster yyyy-MM-dd hh:mm ein
und ich kann die time-zone-Objekt separat, in denen die oben genannten Zeichenfolge das Datum darstellt.
Will ich wandeln diese in die unten format.
yyyy-MM-dd HH:mm:ss Z
Wie kann ich dies tun?
joda-time.sourceforge.net macht alle Datum-Manipulationen in java viel leichter
ich bekam zu wissen, diese Funktion, nachdem Sie sagte :), Danke.
FYI, die Joda-Time Projekt ist nun in der Wartungsmodus, mit dem team beraten migration auf die java.Zeit Klassen.
ich bekam zu wissen, diese Funktion, nachdem Sie sagte :), Danke.
FYI, die Joda-Time Projekt ist nun in der Wartungsmodus, mit dem team beraten migration auf die java.Zeit Klassen.
InformationsquelleAutor John | 2010-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie "=SimpleDateFormat mit
yyyy-MM-dd HH:mm:ss
und explizit den TimeZone:Druckt:
Update 2010-12-01:
Wenn Sie wollen explizit Ausdruck einer besonderen Zeitzone, in der " = SimpleDateFormat:
Dem Drucke
2010-11-17 13:12:00 +0530
Sorry, ich verstehe nicht deinen zweiten Satz. Tun Sie denken, dass etwas falsch?
Michael, ich sage, die Zeit ist immer richtig konvertiert, aber sehen die "Z" - Teil in die Datum-Werte gedruckt "+0100" es spielt keine Veränderungen.Für zB, wenn ich am konvertieren Sie ein Datum aus GMT, TRITT dann die "Z" - Teil, der umgewandelt werden "+0530".
Dies hängt davon ab, das system der code ausgeführt wird. Für
IST
es druckt2010-11-17 07:42:00 +0000
auf ideone.Die Unterscheidung zwischen der generation der ein gültiges Datum mit einer expliziten Zeitzone festlegen, wenn Sie Analyse und den Ausdruck des Datums mit einer expliziten Zeitzone.
InformationsquelleAutor Michael Konietzka
tl;dr
Vermeiden legacy-Datum-Zeit-Klassen
Den anderen Antworten verwenden Sie den lästigen alten Datum-Zeit-Klassen (
Date
,Calendar
usw.), jetzt Erbe, verdrängt durch die java.Zeit-Klassen.LocalDateTime
Solches input-string fehlt jegliche Angabe von offset von UTC oder die Zeitzone. Also wir analysieren als
LocalDateTime
.Definieren ein Formatierungs-Muster, das auf Ihre Eingabe mit einem
DateTimeFormatter
Objekt.Beachten Sie, dass eine
LocalDateTime
ist nicht einem bestimmten Zeitpunkt, nur eine vage Idee, über eine Reihe von möglichen Momente. Zum Beispiel, ein paar Minuten nach der Mitternacht in Paris, Frankreich ist immer noch "gestern" in Montreal, Kanada. Also ohne den Kontext eines Zeit-zone, wieEurope/Paris
oderAmerika/Montreal
, einfach zu sagen: "ein paar Minuten nach Mitternacht" hat keine Bedeutung.ZoneId
Zeit-zone vertreten durch die
amp; zoneid
Klasse.Angeben die richtige Zeit zone name im format
continent/region
wieAmerika/Montreal
,Africa/Casablanca
, oderPacific/Auckland
. Verwenden Sie niemals die 3-4 Buchstaben-Abkürzung wieEST
oderIST
wie Sie sind nicht wahr, Zeitzonen, nicht standardisierten und nicht sogar einzigartig(!).ZonedDateTime
Gelten die
ZoneId
zu bekommenZonedDateTime
die in der Tat ein Punkt auf der Zeitachse, einen bestimmten moment in der Geschichte.Instant
Erste, der weiß, dass ein
Z
literal-Zeichen ist die Abkürzung fürZulu
und bedeutet UTC. In anderen Worten, eine offset von UTC von null Stunden+00:00
.Den
Instant
Klasse repräsentiert einen moment auf der Zeitachse, UTC mit einer Auflösung von Nanosekunden (bis zu neun (9) Ziffern eines dezimalbruchs).Können Sie extrahieren eine
Instant
Objekt aus einemZonedDateTime
.Generieren ein string im standard - ISO 8601 format, wie
2017-01-22T18:21:13.354Z
rufentoString
. Das standard-format, ohne Leerzeichen, verwendet eineT
zu trennen, die Jahr-Monat-Tag Stunden-Minuten-Sekunden, und fügt dieZ
kanonisch für einen offset von null.Ich empfehlen dringend die Verwendung der standard-Formate, Wann immer möglich. Wenn Sie darauf bestehen, mit Leerzeichen wie in der angegebenen gewünschten format, entweder definieren Sie Ihre eigene Formatierung Muster in einer
DateTimeFormatter
- Objekt, oder einfach eine string-manipulation auf die Ausgabe vonInstant::toString
.Versuchen, diese code live an IdeOne.com.
Ü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.
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 Basil Bourque
Verwenden "=SimpleDateFormat
-1: diese wird ParseException werfen, die auf den meisten Zeitzonen.
Konietzka @shal ich Eile, verpasste ich, dass, aktualisiert die Antwort
jetzt
copied
meine Lösung.Konietzka Sie direkt an Ihrem Platz, aber das ist nicht der Fall
InformationsquelleAutor Jigar Joshi
Erstellen Sie eine neue Instanz von "=SimpleDateFormat mit Ihrem date-Muster. Danach können Sie es nennen parse-Methode zum konvertieren von Datums-Zeichenketten zu einer java.util.Datum Objekt.
InformationsquelleAutor Robert
Zweifellos das format, welches im Allgemeinen verwendet wird, eine form
2014-10-05T15:23:01Z
(TZ)Für den, den man hat, um diesen code zu verwenden
Sein Ausgang wird Sun Oct 05 20:53:01 IST 2014
Allerdings bin ich mir nicht sicher, warum mussten wir replaceAll "Z", wenn Sie nicht hinzufügen replaceAll das Programm wird scheitern.
InformationsquelleAutor Somum