E come si fa?
Prima modalità:
Date data1=new Date("5/09/1961");
Date data2=new Date("13/06/1962");
System.out.println(data1);
Ottengo:
01-19 00:48:04.397 28832-28832/? I/System.out: Tue May 09 00:00:00 GMT+00:00 1961In questo modo (deprecato) bisogna ordinare mese e giorno secondo la notazione anglosassone, però.
Un'altra modalità sarebbe convertire la stringa in Date:
Date data1=new Date();
String strDat="5/9/1961";
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
try {
data1=sdf.parse(strDat);
System.out.println(data1);
} catch (ParseException e) {
e.printStackTrace();
}
01-19 00:58:48.387 31082-31082/? I/System.out: Tue Sep 05 00:00:00 GMT+00:00 1961Queste modalità creano un tipo Date (ovviamente contenente una data) a partire da una data specifica, espressa come stringa.
Per riportare il tipo Date a stringa, si usa sempre SimpleDateFormat con l'istruzione format.
Ora metto diverse date in ordine sparso nel database e poi le ordino con ORDER BY.
Queste sono le date ordinate, ottenute creando tipi Date con la stringa della data come parametro nel costruttore, i quali vengono memorizzati mediante la funzione Date.getTime().
Vengono ripresi dal database creando un Date avente nel costruttore il Long.
Date data1=new Date("09/05/1961");
Date data2=new Date("01/10/2003");
Date data3=new Date("06/13/1962");
helper.save(data1.getTime());
helper.save(data2.getTime());
helper.save(data3.getTime());
,,,
public void onClick(View v) {
Cursor crs=helper.query();
do {
System.out.println(new Date(crs.getLong(crs.getColumnIndex("millidat"))));
}while(crs.moveToNext());
}
Ora invece di Date uso Calendar:
Calendar data1=Calendar.getInstance();
data1.set(Calendar.YEAR,1961);
data1.set(Calendar.MONTH,8);
data1.set(Calendar.DAY_OF_MONTH,5);
Questo porta via molto tempo e codice: c'è un modo più facile di creare un Calendar impostando una data?Sì, c'è:
Calendar cal1=Calendar.getInstance();
Calendar cal2=Calendar.getInstance();
Calendar cal3=Calendar.getInstance();
cal1.set(1961,8,5);
cal2.set(2003,0,10);
cal3.set(1962,5,13);
helper.save(cal1.getTimeInMillis());
helper.save(cal2.getTimeInMillis());
helper.save(cal3.getTimeInMillis());
Salvati i dati nel database, ho trovato come estrapolarne il minimo e il massimo:
public Cursor query(){
SQLiteDatabase db=this.getWritableDatabase();
Cursor c=db.rawQuery("select min(millidat) as millidat from tabella",null);
c.moveToFirst();
return c;
}
public Cursor query(){
SQLiteDatabase db=this.getWritableDatabase();
Cursor c=db.rawQuery("select max(millidat) as millidat from tabella",null);
c.moveToFirst();
return c;
}
Nessun commento:
Posta un commento