Convert date string (EST) Java Datum (UTC)
Brauche ich etwas Beratung, die auf diese java-Methode. Die Absicht dieser Methode ist ein string für ein Datum - dieser string wurde aus einem Datum in der EST-Zeitzone - und wandeln Sie es in ein java-Date-Objekt in der UTC-Zeitzone.
private Date buildValidationDate(String dateString) throws ParseException {
System.out.println("dateString " + dateString);
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyy hh:mm a");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
dateFormat.setLenient(true);
Date dt = dateFormat.parse(dateString);
System.out.println("dt " + dt);
return dt;
}
das problem das ich sehe ist der Wert von dt zu sein scheint, aus. Zum Beispiel, wenn Sie die dateString ist '10/16/2012 12:06 PM" - ich gehe davon aus, dass der Wert von dt (in UTC), um etwas wie "Dienstag, Oktober 16, 2012 4:06 PM". Stattdessen wird der Wert von dt ist "Tue Oct 16 07:06:00 CDT 2012'. Dies scheint nicht die richtige UTC-Zeit.
Ich freue mich über jeden Rat, ich bin sorry, wenn dies scheint eine einfache Frage, ich habe eine Menge ärger mit Java-Termine. Ich bin mir nicht sicher, ob ich die Codierung etwas falsch oder, wenn es etwas falsch mit meiner Methode. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr Datum ist immer Recht umgewandelt. Seine Druck-Wert in der Standard-Zeitzone-format als
java.util.Date
ist die Zeitzone unabhängig ist. Wenn Sie möchten, Zeitzone spezifische Handhabung, nutzen Sie bittejava.util.Calendar
.Als richtig akzeptierte Antwort von Singh sagt, Ihr
Date
eigentlich ist in UTC, aber seinetoString
Methode verwirrenderweise gilt die aktuelle Standard-Zeitzone bei der Generierung der Zeichenfolge.ISO 8601
Vermeiden Formate
10/16/2012 12:06 PM
für die Datum-Zeit-Werte. Bei der Serialisierung in text, verwenden Sie die ISO 8601 Formate definiert als standard für diesen Zweck.java.Zeit
Es ist nicht du; es ist die Klassen. Die alten legacy-Datum-Zeit-Klassen wurden von einem tapferen Industrie-führenden Aufwand bei der Bearbeitung der Datum-Zeit. Aber Sie erwiesen sich als schlecht durchdacht, schlecht konzipiert, sehr verwirrend und lästig. Jetzt ersetzt durch java.Zeit-Klassen – eine gigantischen Verbesserung.
Vermeiden, dieses lästige alte
java.util.Date
- Klasse völlig. StattdessenInstant
stellen.Instant
Den
Instant
Klasse repräsentiert einen moment auf der Zeitachse, UTC mit einer Auflösung von Nanosekunden (bis zu neun (9) Ziffern eines dezimalbruchs).Holen Sie sich die aktuellen moment.
Können Sie konvertieren ein Datum zu seiner modernen Ersatz durch Aufruf einer der neuen Konvertierungs-Methoden Hinzugefügt, um das alte Datum-Zeit-Klassen. Rufen Sie einfach toInstant, ganz einfach.
Java.Zeit-Klassen verwenden ISO-8601-Formate standardmäßig beim erzeugen von strings. Rufen Sie einfach
toString
um eine klare Darstellung der Wert innerhalb des Objekts.Analyse
Analysieren Sie Ihre Eingabe string aus, definieren Sie die Formatierung Muster zu entsprechen. Die Muster-codes sind ähnlich wie
SimpleDateFormat
aber nicht genau das gleiche. So sicher sein, zu Studie der doc vorsichtig.Ihre Eingabe fehlt jede Ahnung von offset von UTC oder die Zeitzone. Also müssen wir analysieren, wie ein
LocalDateTime
. Fehlt eine Aufrechnung oder die zone, einLocalDateTime
ist nur eine vage Idee über mögliche Momente, aber nicht nicht repräsentieren einen Punkt auf der Zeitleiste.Der Frage behauptet, dass dies gemeint war für "EST-Zeitzone". Deshalb wenden wir eine Zeitzone, eine
ZoneId
zu unsererLocalDateTime
zu bekommenZonedDateTime
.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(!).Vielleicht durch
EST
Sie bedeutete die Zeitzonen verwendet in weiten teilen der Ostküste der Vereinigten Staaten und Kanada. Ich werde willkürlich wählenAmerica/New_York
.Bekommen UTC, extrahieren Sie einfach eine
Instant
. Sie können sich vorstellen dies konzeptionell: