Wie konvertiert man Date zu LocalTime?

8

Ich versuche, ein Date in ein LocalTime umzuwandeln (ich will nur die Stunden und Minuten des Datums), aber es funktioniert nicht. Ich habe hier zuerst date-to-java-time gesucht und versucht, Date in zu konvertieren LocalTime , aber das hat nicht funktioniert, also habe ich versucht, Date in Calendar zu konvertieren und dann Calendar in Date zu konvertieren, aber das hat auch nicht funktioniert.

Ich denke es liegt daran, dass date die Zeit in fasttime statt in cdate speichert. Aber das ist nur ein Bauchgefühl. Hier ist mein Code:

%Vor%

Ich erhalte keinen Kompilierungsfehler, aber die LocalTime seiner Stunden sind nicht gesetzt und bleiben 0 .

    
Stanko 28.04.2015, 18:40
quelle

4 Antworten

9

Ihre Eingabe ist effektiv ein LocalDateTime . Es wäre viel einfacher, das auf ein LocalDateTime zu parsen und dann das LocalTime daraus zu bekommen. Keine Zeitzonen, um die Sie sich sorgen müssen, keine etwas älteren Klassen (vermeiden Sie Date und Calendar wo möglich ...)

%Vor%     
Jon Skeet 28.04.2015, 18:49
quelle
7

Das ist auch ganz einfach: LocalTime time = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()).toLocalTime()

    
user2655624 05.10.2016 09:14
quelle
2

Die akzeptiert Antwort von Jon Skeet ist korrekt. Diese Antwort erweitert diese Ideen.

Vermeide ältere Datum-Uhrzeit-Klassen

Einige der anderen Antworten und die Frage mischen die alten Legacy-Datum-Zeit-Klassen mit den neuen. Das ist unnötig und schlechte Praxis. Der ganze Sinn der java.time Klassen ist < em> ersetzen die lästigen und verwirrenden alten Klassen.

  • Sie tun nicht brauchen java.util.Date .
  • Sie tun nicht brauchen java.util.Calendar .

LocalDateTime

In Ihrer Eingabezeichenfolge sind keine Informationen zur Zeitverschiebung von UTC oder Zeitzone enthalten. Also analysieren wir es als LocalDateTime Objekt.

>

Um zu analysieren, ersetzen wir den SPACE in der Mitte mit einem T , um dem Standard ISO 8601 zu entsprechen Datum-Uhrzeit-Formate.

%Vor%

LocalTime

Um sich auf die Tageszeit ohne Datum zu konzentrieren, fragen Sie nach einem LocalTime .

%Vor%

ZonedDateTime

Beachten Sie, dass dies keine tatsächlichen Momente sind, kein Punkt auf der Timeline. Ohne den Zusammenhang einer UTC-Zeitzone oder einer Zeitzone wissen wir nicht, ob Sie in Auckland NZ 5 Uhr oder in Kalkutta 5 Uhr morgens oder in Paris Frankreich 5 Uhr oder in Montréal Québec 5 Uhr morgens gemeint haben. Jeder von diesen würde sehr unterschiedliche Momente in der Zeit sein.

Wenn Sie die gewünschte Zeitzone im Kontext kennen, wenden Sie sie an. Wenden Sie eine ZoneId an, um eine ZonedDateTime .

%Vor%

Von dort nach dem LocalTime fragen, falls gewünscht.

%Vor%

Instant

Wenn Sie denselben Moment in UTC sehen möchten, extrahieren Sie ein Instant . Die Klasse Instant repräsentiert einen Moment auf der Timeline in UTC mit einer Auflösung von Nanosekunden (bis zu neun (9) Ziffern einer Dezimalzahl).

Im Allgemeinen sollten Sie sich bei vielen Ihrer Geschäftslogiken, Protokollierung, Datenspeicherung und Datenaustausch auf UTC konzentrieren. Lernen Sie, UTC als "The One True Time" zu verstehen.

%Vor%     
Basil Bourque 05.10.2016 22:47
quelle
0
___ qstnhdr ___ Wie konvertiert man Date zu LocalTime? ___ answer29927527 ___

Ihre Eingabe ist effektiv ein %code% . Es wäre viel einfacher, das auf ein %code% zu parsen und dann das %code% daraus zu bekommen. Keine Zeitzonen, um die Sie sich sorgen müssen, keine etwas älteren Klassen (vermeiden Sie %code% und %code% wo möglich ...)

%Vor%     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer39869935 ___

Das ist auch ganz einfach: %code%

    
___ tag123date ___ Ein Datum ist ein mehrdeutiges Zeitintervall, das sich normalerweise auf einen Tag, einen Monat und ein Jahr bezieht. ___ answer29927556 ​​___

Probieren Sie das

aus %Vor%     
___ answer39884840 ___

Die akzeptiert Antwort von Jon Skeet ist korrekt. Diese Antwort erweitert diese Ideen.

Vermeide ältere Datum-Uhrzeit-Klassen

Einige der anderen Antworten und die Frage mischen die alten Legacy-Datum-Zeit-Klassen mit den neuen. Das ist unnötig und schlechte Praxis. Der ganze Sinn der java.time Klassen ist < em> ersetzen die lästigen und verwirrenden alten Klassen.

  • Sie tun nicht brauchen %code% .
  • Sie tun nicht brauchen %code% .

%code%

In Ihrer Eingabezeichenfolge sind keine Informationen zur Zeitverschiebung von UTC oder Zeitzone enthalten. Also analysieren wir es als %code% Objekt.

>

Um zu analysieren, ersetzen wir den SPACE in der Mitte mit einem %code% , um dem Standard ISO 8601 zu entsprechen Datum-Uhrzeit-Formate.

%Vor%

%code%

Um sich auf die Tageszeit ohne Datum zu konzentrieren, fragen Sie nach einem %code% .

%Vor%

%code%

Beachten Sie, dass dies keine tatsächlichen Momente sind, kein Punkt auf der Timeline. Ohne den Zusammenhang einer UTC-Zeitzone oder einer Zeitzone wissen wir nicht, ob Sie in Auckland NZ 5 Uhr oder in Kalkutta 5 Uhr morgens oder in Paris Frankreich 5 Uhr oder in Montréal Québec 5 Uhr morgens gemeint haben. Jeder von diesen würde sehr unterschiedliche Momente in der Zeit sein.

Wenn Sie die gewünschte Zeitzone im Kontext kennen, wenden Sie sie an. Wenden Sie eine %code% an, um eine %code% .

%Vor%

Von dort nach dem %code% fragen, falls gewünscht.

%Vor%

%code%

Wenn Sie denselben Moment in UTC sehen möchten, extrahieren Sie ein %code% . Die Klasse %code% repräsentiert einen Moment auf der Timeline in UTC mit einer Auflösung von Nanosekunden (bis zu neun (9) Ziffern einer Dezimalzahl).

Im Allgemeinen sollten Sie sich bei vielen Ihrer Geschäftslogiken, Protokollierung, Datenspeicherung und Datenaustausch auf UTC konzentrieren. Lernen Sie, UTC als "The One True Time" zu verstehen.

%Vor%     
___ tag123localtime ___ hilf uns dieses Wiki zu bearbeiten ___ qstntxt ___

Ich versuche, ein %code% in ein %code% umzuwandeln (ich will nur die Stunden und Minuten des Datums), aber es funktioniert nicht. Ich habe hier zuerst date-to-java-time gesucht und versucht, %code% in zu konvertieren %code% , aber das hat nicht funktioniert, also habe ich versucht, %code% in %code% zu konvertieren und dann %code% in %code% zu konvertieren, aber das hat auch nicht funktioniert.

Ich denke es liegt daran, dass %code% die Zeit in %code% statt in %code% speichert. Aber das ist nur ein Bauchgefühl. Hier ist mein Code:

%Vor%

Ich erhalte keinen Kompilierungsfehler, aber die %code% seiner Stunden sind nicht gesetzt und bleiben %code% .

    
___
Dien 28.04.2015 18:50
quelle

Tags und Links