Domanda

Ho un String rappresentazione di una data di cui ho bisogno per creare un file Date O Calendar oggetto da.Ho dato un'occhiata Date E Calendar API ma non ho trovato nulla che possa farlo oltre a creare il mio brutto metodo di analisi.So che ci deve essere un modo, qualcuno conosce una soluzione?

È stato utile?

Soluzione

In breve:

DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
try {
  Date date = formatter.parse("01/29/02");
} catch (ParseException e) {
  e.printStackTrace();
}

Vedere SimpleDateFormat javadoc per più.

E per trasformarlo in a Calendar, Fare:

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Altri suggerimenti

tl; dott

LocalDate.parse( "2015-01-02" )

java.time

Java 8 e versioni successive hanno una nuova versione java.time quadro che rende queste altre risposte antiquate.Questo quadro è ispirato a Joda-Time, definito da JSR310, e prorogato dal Tredieci-Extra progetto.Vedi il Esercitazione.

Le vecchie classi in bundle, java.util.Date/.Calendar, sono notoriamente problematiche e confuse.Evitateli.

LocalDate

Come Joda-Time, java.time ha una classe LocalDate per rappresentare un valore di sola data senza ora del giorno e senza fuso orario.

ISO8601

Se la stringa di input è nello standard ISO8601 formato di yyyy-MM-dd, puoi chiedere a quella classe di analizzare direttamente la stringa senza bisogno di specificare un formattatore.

I formati ISO 8601 vengono utilizzati per impostazione predefinita in java.time, sia per l'analisi che per la generazione di rappresentazioni di stringhe di valori di data e ora.

LocalDate localDate = LocalDate.parse( "2015-01-02" );

Formattatore

Se hai un formato diverso, specifica un formattatore dal file java.time.format pacchetto.È possibile specificare il proprio modello di formattazione o lasciare che java.time venga localizzato automaticamente in modo appropriato a a Locale specificando una lingua umana per la traduzione e norme culturali per decidere questioni come il punto rispetto alla virgola.

Modello di formattazione

Leggi il DateTimeFormatter class doc per i dettagli sui codici utilizzati nel modello di formato.Variano un po' dal vecchio antiquato java.text.SimpleDateFormat modelli di classe.

Nota come il secondo argomento di parse il metodo è a riferimento al metodo, sintassi aggiunta a Java 8 e versioni successive.

String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MMMM d, yyyy" , Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );

Scarica sulla console.

System.out.println ( "localDate: " + localDate );

datalocale:2015-01-02

Localizza automaticamente

Oppure, invece di specificare un modello di formattazione, lascia che java.time lo localizzi per te.Chiamata DateTimeFormatter.ofLocalizedDate, e assicurati di specificare quanto desiderato/previsto Locale piuttosto che fare affidamento sull'impostazione predefinita corrente della JVM che può cambiare in qualsiasi momento durante il runtime (!).

String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.LONG );
formatter = formatter.withLocale ( Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );

Scarica sulla console.

System.out.println ( "input: " + input + " | localDate: " + localDate );

ingresso:2 gennaio 2015 | LocalDate:2015-01-02

IL molto apprezzato Biblioteca del tempo di Joda vale anche la pena dare un'occhiata.Questa è la base per il nuovo data e ora API che è previsto per Java 7.Il design è pulito, intuitivo, Ben documentato ed evita gran parte della goffaggine dell'originale java.util.Date / java.util.Calendar classi.

Quello di Joda DateFormatter può analizzare una stringa in un Joda DateTime.

Prova questo:

DateFormat.parse(String)

IL DateFormat la classe ha a parse metodo.

Vedere http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html per maggiori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top