Il accepted Answer by Jon Skeet è corretto. Questa risposta si espande su quelle idee.
Evitare legacy classi data-ora
Alcune delle altre risposte, e la questione, si mescolano le vecchie classi legacy data-ora con il nuovo. Questa è una pratica inutile e cattiva. L'intero punto delle classi java.time è sostituire le classi vecchie fastidiose e confuse.
- Fate non bisogno
java.util.Date
.
- non necessario
java.util.Calendar
.
LocalDateTime
La stringa di input è priva di qualsiasi informazioni su offset da-UTC o il fuso orario. Quindi lo analizziamo come un oggetto LocalDateTime
.
Per analizzare, sostituiamo lo SPAZIO nel mezzo con uno T
conforme allo standard ISO 8601 per i formati di data e ora.
String input = "2011-02-18 05:00:00.0".replace(" " , "T");
LocalDateTime ldt = LocalDateTime.parse(input);
LocalTime
a concentrarsi sul momento della giornata senza la data, per chiedere un LocalTime
.
LocalTime lt = ldt.toLocalTime();
ZonedDateTime
Nota che niente di tutto questo sono momenti reali, non un punto sulla timeline. Senza il contesto di un offset da UTC o un fuso orario, non sappiamo se volevi dire 5 AM a Auckland NZ o 5 AM a Kolkata IN o 5 AM a Parigi Francia o alle 5 AM a Montréal Québec. Ognuno di questi sarebbe momenti molto diversi nel tempo.
Se dal contesto si conosce per certo il fuso orario desiderato, applicarlo. Applicare uno ZoneId
per ottenere uno ZonedDateTime
.
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime zdt = ldt.atZone(z);
Da lì, chiedere il LocalTime
se lo si desidera.
LocalTime lt = zdt.toLocalTime();
Instant
Se volete vedere quello stesso momento in UTC, estrarre un Instant
. La classe Instant
rappresenta un momento nella timeline in UTC con una risoluzione di nanoseconds (fino a nove (9) cifre di una frazione decimale).
In genere è meglio concentrarsi su UTC in gran parte della logica aziendale, della registrazione, dell'archiviazione dei dati e dello scambio di dati. Impara a pensare a UTC come "The One True Time".
Instant instant = zdt.toInstant(); // Same moment, shifted to UTC.
Per prima cosa, quale versione di Java stiamo parlando? –
@ RafaelR.S.Robles JDK 1.8 – Stanko