2011-12-16 10 views
13

Ho letto alcuni messaggi su formattazione data su Android, come questo:Qual è la differenza tra android.text.format.DateFormat e java.text.DateFormat

How do you format date and time in Android?

persone suggeriscono l'uso android.text.format.DateFormat piuttosto che java.text.DateFormat ,

anche qui, è parlare di un problema durante la conversione data a stringa in Android:

Android load timezone too long: Loaded time zone names for en_US

Mi chiedo quale sia la differenza tra android.text.format.DateFormat e java.text.DateFormat?

risposta

-13

Che ne dici di un auto-aiuto qui? Confrontare le API, leggere le JavaDocs e vedere di persona:

+18

Un uomo saggio una volta mi disse: "Dai un fuoco a un uomo, e sarà caldo per il resto della notte. Metti un uomo in fiamme e sarà caldo per il resto della sua vita. "_ –

+0

questa è stata la tua risposta da uno dei tuoi primi giorni? –

+0

citazione attuale è: "Costruisci un uomo un fuoco, e lui sarà caldo per un giorno. Set un uomo in fiamme, e sarà caldo per il resto della sua vita". –

12

Per quanto posso dire, android.text.format.DateFormat ha alcune delle funzionalità da java.text.DateFormat, alcune delle funzionalità da java.text.SimpleDateFormat e alcune funzionalità aggiuntive.

In particolare:

  • Il SimpleDateFormat Java consente la costruzione di formati non-localizzato arbitrari.
  • java DateFormat consente la costruzione di tre formati localizzati ciascuno per date e orari, tramite i metodi di fabbrica.
  • Android DateFormat consente la maggior parte dei sopra (formati arbitrari e un numero minore di formati localizzati), ma fornisce anche getBestDateTimePattern che seleziona una stringa di formato appropriata per la locale che contiene gli elementi specificati con l'ordinamento e la punteggiatura appropriati.

Quindi, se è necessario un formato di data/ora localizzato diverso dai tre forniti dalla classe DateFormat di java, la classe DateFormat di Android è la soluzione.

Meno importante, ma un ulteriore vantaggio: i metodi Android DateFormat possono richiedere un calendario o lunghi millisecondi direttamente, invece di richiedere un oggetto Date. Preferisco sempre lavorare con il calendario o scadenze troppo lunghe. Inoltre, rispetta correttamente il fuso orario dell'oggetto Calendario, mentre ottenere una data da un calendario e passarlo insieme al formattatore perde le informazioni sul fuso orario. (Niente che non si possa aggirare con il metodo setCalendar di java DateFormat, ma è bello non doverlo fare.)

Infine, e meno importante, alcuni dei metodi di Android DateFormat in realtà non costruiscono un formattatore, tu basta costruire una stringa di formato. Tutti i metodi di questa classe sono statici. I metodi che costruiscono un DateFormat in realtà costruiscono un DateFormat java!

+7

Questa dovrebbe essere la risposta accettata.Almeno tenta di rispondere alla domanda anziché collegarsi in modo attraente alla documentazione online. "Leggi la documentazione" non dovrebbe mai essere una risposta accettata. – akousmata

+0

Sarei felice di cancellare la mia vecchia, schifosa risposta, ma SO non ti consente di cancellare la risposta accettata. –

Problemi correlati