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; }