Rappresentare le Date in Java con SimpleDateFormat
DOMANDA:
Come posso rappresentare le date in Java?
RISPOSTA:
Java ha una molteplicità di oggetti che gestiscono le date, qualcuno con un funzionamento intuitivo, altri meno. Un tentativo di semplificare la loro gestione è fornito dalla classe SimpleDateFormat (java.text.SimpleDateFormat).
Vediamo come funziona con il seguente esempio SimpleDateFormatTest:
package date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class SimpleDateFormatTest { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(); // creo l'oggetto // primo pattern: 2009, 12, 09 sdf.applyPattern("yyyy, MM, dd"); Date data = sdf.parse("2009, 12, 9"); String dataStringa = sdf.format(data); System.out.println(dataStringa); // modifico il pattern: 2009-12-09 sdf.applyPattern("yyyy-MM-dd"); dataStringa = sdf.format(data); System.out.println(dataStringa); // settiamo il formato data (pattern) nel costruttore: 080413231216100 sdf = new SimpleDateFormat("ddMMyyHHmmssSS"); dataStringa = sdf.format(new Date()); // data corrente (8 aprile 2013) System.out.println(dataStringa); // pattern: 08-04-13-23.12.16100 sdf.applyPattern("dd-MM-yy-HH:mm:ssSS"); dataStringa = sdf.format(new Date()); System.out.println(dataStringa); // pattern: 08/04/2013 sdf = new SimpleDateFormat("dd/MM/yyyy"); dataStringa = sdf.format(new Date()); System.out.println(dataStringa); // settiamo la data in inglese: 01 June 1990 data = sdf.parse("01/06/1990"); Locale.setDefault(Locale.ENGLISH); sdf = new SimpleDateFormat("dd MMMM yyyy"); //necessario dichiarare un nuovo oggetto per applicare i settaggi di localizzazione dataStringa = sdf.format(data); System.out.println(dataStringa); // e in italiano: 01 giugno 1990 Locale.setDefault(Locale.ITALIAN); sdf = new SimpleDateFormat("dd MMMM yyyy"); dataStringa = sdf.format(data); System.out.println(dataStringa); } }
Il codice è ricco di commenti auto-esplicativi, ma vediamo lo stesso l'output fornito dal programma:
2009, 12, 09
2009-12-09
080413233647979
08-04-13-23:36:47979
08/04/2013
01 June 1990
01 giugno 1990
2009-12-09
080413233647979
08-04-13-23:36:47979
08/04/2013
01 June 1990
01 giugno 1990
Ecco una breve tabella riepilogativa su come comporre i pattern:
Tabella pattern SimpleDateFormat |
NOTA: SimpleDateFormat non è ThreadSafe, quindi non è sincronizzato. La raccomandazione è quindi di creare ciascuna istanza SimpleDateFormat in Thread separati oppure di sincronizzarne esternamente l'accesso.
Un metodo alternativo a SimpleDateFormat può essere trovato qui.
Un metodo alternativo a SimpleDateFormat può essere trovato qui.
Commenti
Posta un commento