java.time
La risposta di MadProgrammer è corretta, in particolare il suggerimento su Joda-Time . Il successore di Joda-Time è ora integrato in Java 8 come nuovo pacchetto java.time . Ecco un esempio di codice in Java 8.
Quando si lavora con data-ora (in contrapposizione alla data locale), il fuso orario è critico. Il giorno del mese dipende dal fuso orario. Ad esempio, il fuso orario dell'India è +05:30
(cinque ore e mezza avanti rispetto a UTC), mentre la Francia è solo un'ora avanti. Quindi un momento in un nuovo giorno in India ha una data mentre lo stesso momento in Francia ha una data di "ieri". La creazione di un output di stringa privo di informazioni sul fuso orario o offset sta creando ambiguità. Hai chiesto l'output AAAA-MM-GG, quindi ho fornito, ma non lo consiglio. Invece di ISO_LOCAL_DATE
avrei usato ISO_DATE
per ottenere questo output:2014-02-25+05:30
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId );
DateTimeFormatter formatterOutput = DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity.
String output = formatterOutput.format( zonedDateTime );
Dump per console ...
System.out.println( "zonedDateTime: " + zonedDateTime );
System.out.println( "output: " + output );
Quando eseguito ...
zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata]
output: 2014-02-25
Joda-Time
Codice simile usando la libreria Joda-Time , il precursore di java.time.
DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" );
DateTime dateTime = DateTime.now( zone );
DateTimeFormatter formatter = ISODateTimeFormat.date();
String output = formatter.print( dateTime );
ISO 8601
A proposito, quel formato della tua stringa di input è un formato standard, uno dei numerosi formati di stringhe di data e ora definiti da ISO 8601 .
Sia Joda-Time che java.time utilizzano i formati ISO 8601 per impostazione predefinita quando analizzano e generano rappresentazioni di stringhe di vari valori di data e ora.
Date
adyyyy-MM-dd
o di analizzare una stringa dayyyy-MM-dd
unDate
valore di ?? Per formattare la data, basta usareformat1.format(date)
, per analizzarla, usareformat1.parse(someStringValueInTheCorrectFormat)