La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Date, Calendar, GregorianCalendar, SimpleDateFormat

Presentazioni simili


Presentazione sul tema: "Date, Calendar, GregorianCalendar, SimpleDateFormat"— Transcript della presentazione:

1 Date, Calendar, GregorianCalendar, SimpleDateFormat
Le date in java Date, Calendar, GregorianCalendar, SimpleDateFormat

2 classi obsolete la classe Date è obsoleta.. è stata sostituita dalla classe astratta Calendar Possiamo utilizzare una classe derivata da Calendar, la GregorianCalendar le date è un tipo di dato molto complesso, non deve quindi stupire che ci siano state storicamente delle classi che ora non vengono più usate

3 GregorianCalendar data = new GregorianCalendar()
Utilizzando il costruttore senza parametri si ottiene un oggetto che contiene tutti i parametri relativi al momento attuale, dall’anno (che può essere bisestile o no) al millisecondo GregorianCalendar data = new GregorianCalendar() Legge la data e l’ora della macchina e la ripropone secondo il fuso orario di sistema.

4 data.get(GregorianCalendar.YEAR)
Come leggere la data Esiste il metodo get( ) che ha come parametro un intero. La classe GregorianCalendar eredita da Calendar numerose costanti, che possono essere utilizzate con il metodo get Esempio: data.get(GregorianCalendar.YEAR) restituirà l’anno della data (es: 1985)

5 Come leggere la data con .get(..)
in particolare: Calendar.YEAR anno Calendar.MONTH mese, ma attenzione parte da 0=gennaio, 11=dicembre!! Calendar.DATE o Calendar.DAY_OF_MONTH giorno del mese (da 1 a 31)

6 Come leggere la data con .get(..)
Calendar.DAY_OF_WEEK giorno della settimana, attenzione: 1= domenica, 2=lunedì, …. 7=sabato Calendar.DAY_OF_YEAR giorno del’anno da 1 a 365 (o 366 se l’anno è bisestile) per sapere se un anno è bisestile si può usare il metodo di un qualsiasi oggetto di classe Calendar .isLeapYear( anno )

7 Leggere l’ora con .get( )
Calendar.HOURS ora compresa tra 0 e 11: Calendar.AM_PM restituisce 0=am e 1=pm Calendar.HOUR_OF_DAY ora compresa tra 0 e 23 Calendar.MINUTE minuti da 0 a 59 Calendar.SECOND secondi da 0 a 59 Calendar.MILLISECOND millisecondi (0- 999)

8 Costruire una data Abbiamo visto che il costruttore vuoto crea un oggetto data con i valori del momento Volendo creare una data qualsiasi è sufficiente utilizzare il costruttore con alcuni argomenti (3,5 o 6 interi) GregorianCalendar gc = new GregorianCalendar(anno, mese, giorno) GregorianCalendar gc = new GregorianCalendar(anno, mese, giorno, ora, minuti) GregorianCalendar gc = new GregorianCalendar(anno, mese, giorno, ora, minuti, secondi) ATTENZIONE: il mese è sempre compreso tra 0 e 11 !! Per non confondersi si possono usare le costanti Calendar.JANUARY, Calendar. FEBRUARY, ecc.

9 Altri metodi .getTime( ) resituisce un ogetto Date, se si prova a stamparlo si ottiene una stringa tipo Thu Jan 31 18:30:24 CET 2013 .getTimeInMillis( ) restituisce un intero (long) che esprime la data in millisecondi

10 Confronto tra date data1.after( data2 ) data1 < data2
data1.equals( data2 ) data1 = data2 data1.before( data2 ) data1 > data2 nota: se inserisco solo la data si intende alle ore 00:00.0

11 Classe SimpleDateFormat
La classe SimpleDateFormat nasce per semplificare l’utilizzo della data, risolvendo alcuni problemi riguardanti l’input e l’output In pratica questo oggetto permette di gestire date espresse con nomi di mesi o di giorni Nel costruttore si definisce il modello, utilizzando delle convenzioni. Es: SimpleDateFormat formato = new SimpleDateFormat("EEEE d MMMM yyyy HH:mm.ss")

12 Classe SimpleDateFormat
d o D esprime il numero del giorno del mese (0-31 o con dd) M esprime il mese: M: 1-12, MM: MMM: gen-dic MMMM: gennaio-dicembre y esprime l’anno con due cifre yyyy esprime l’anno con quattro cifre

13 Classe SimpleDateFormat
E esprime il giorno della settimana con 3 lettere (dom, lun, …) EEEE esprime il giorno della settimana domenica, lunedì, … w settimana nell’anno 1-52, ww:01-52 W settimana nel mese 1-6

14 Classe SimpleDateFormat
h esprime l’ora hh: 01-12 H esprime l’ora hh: 00-23 k esprime l’ora kk: 01-24 K esprime l’ora KK: 00-11 m esprime i minuti 0-59, mm:00-59 s esprime i secondi 0-59, ss:00-59 S esprime i millisecondi SSS a esprime AM o PM

15 Stampiamo la data col formato
definire il formato ( costruttore della classe SimpleDateFormat) creare una data (costruttore della classe GregorianCalendar) utiliziamo il formato (metodo format dell’oggetto di classe SimpleDateFormat che vuole come parametro un oggetto di classe Date Per avere un oggetto di classe Date occorre utilizzare il metodo getTime dell’oggetto di classe GregorianCalendar SimpleDateFormat formato = new SimpleDateFormat("EEEE d MMMM yyyy HH:mm.ss"); GregorianCalendar adesso = new GregorianCalendar(2007,3,2,2,45,7); System.out.println( formato.format( adesso.getTime() )); stamperà a video: lunedì 2 aprile :45.07

16 Acquisizione di una data
La classe SimpleDateFormat espone un comodo metodo .parse( s ) che riceve una stringa di testo e restituisce un oggetto di tipo Date. volendo poi convertire una data dal tipo Date a Calendar, esiste il metodo setTime di Calendar al quale può ricevere direttamente il tipo Date

17 Esempio String sFormato = "EEEE d MMMM yyyy HH:mm.ss";
String sDataScritta = "mercoledì 30 marzo :32.00"; SimpleDateFormat objFormato = new SimpleDateFormat(sFormato); Date dataClasseDate = objFormato.parse(sDataScritta); GregorianCalendar dataClasseGC = new GregorianCalendar(); dataClasseGC.setTime(dataClasseDate);

18 Aggiungere o sottrarre alle date
usando GregorianCalendar esiste il metodo add( cheCosa, quantità ) questo metodo non restituisce nulla, ma lavora sulla data in cheCosa si possono utilizzare le costanti della classe Calendar già viste quantità può essere positiva o negativa GregorianCalendar oggi = new GregorianCalendar(); GregorianCalendar tra2giorni = new GregorianCalendar(); tra2giorni.add( Calendar.DAY_OF_MONTH, 3);

19 Differenza tra date Di solito si prendono le due date espresse in millisecondi, ad esempio con il metodo . getTimeInMillis( ) degli oggetti di classe GregorianCalendar Quindi si ha come differenza un valore d in millisecondi… secondi = d/1_000; minuti = d/60_000; ore = d / 3_600_000; giorni = d / 86_400_000;

20 .getTime(..) e .getTime(..) Una precisazione:
il metodo .getTime di un oggetto GregorianCalendar restituisce un oggetto di classe Date il metodo .getTime di un oggetto Date restituisce il numero di millisecondi dal 1/1/1970 La classe Date è deprecata!!


Scaricare ppt "Date, Calendar, GregorianCalendar, SimpleDateFormat"

Presentazioni simili


Annunci Google