Newsgroup: it.comp.java
Titolo: Confrtonto tra date sto impazzendo

devo poter confrtontare due date che però ho a disposizione in 2 formati
differenti che riporto
1.
2003-10-15 00:00:00
(formato di Access mi viene dato come risultato di una query su un Database)
2.
Fri Mar 07 19:39:16 CET 2003
(il formato standard di java.util.Date()
E' ovvio che affinche il confronto abbia senso occorre portare le date in
una stessa forma
Relativamente al tipo1 di cui sopra ho pensato ad un bean (visto che devo
richiamare i metodi in una JSP)
Ecco di seguito riposrtato il codice del bean per portare la data nella
forma seguente
20031015 trascurando l'ora che non mi interessa
package miaData;
import java.util.*;
public class formaData {
  int anno;
  int mese;
  int giorno;
  public void setAnno(String data) {
   String year= new String();
   for (int i=0; i<=3; i=i+1)
    year=year+(data.charAt(i));
   anno=Integer.parseInt(year);
  }
  public void setMese(String data) {
   String mounth=new String();
   for (int i=5; i<=6; i=i+1)
    mounth=mounth+(data.charAt(i));
   mese=Integer.parseInt(mounth);
  }
  public void setGiorno(String data) {
   String day=new String();
   for (int i=8; i<=9; i=i+1)
    day=day+(data.charAt(i));
   giorno=Integer.parseInt(day);
  }
  public Date getData() {
   Calendar cal = GregorianCalendar.getInstance();
   cal.set(anno,mese,giorno);
   Date data=cal.getTime();
   return data;
  }
}
L'idea era di richiamare all'interno della pagina JSP i metodi del bean una
volta reperita dal database di access la Stringa date=2003-10-15 00:00:00
nel modo che segue
<jsp:useBean id="miaData" class="miaData.formaData" scope="session" />
 <% miaData.setAnno(date); %>
 <% miaData.setMese(date); %>
 <% miaData.setGiorno(date); %>
Stranamente se la String date contiene 2003-11-25 00:00:00  il bean mi
restituisce la seguente data
Thu Dec 25 20:12:46 CET 2003 che pare essere un mese avanti e inoltre le ore
(20:12;46) dove le ha prese?
Credo che quella scelta sia una coluzione molto complicata. Ovviamnte se
qualcuno sa un modo piu semplice per poter costruire un oggetto
java.util.Date a partire dalla stringa del tipo 2003-11-25 00:00:00 per
poterla poi confrontare con una istanza di java.util.Date().

devo poter confrontare due date che però ho a disposizione in 2 formati
differenti che riporto
1.
2003-10-15 00:00:00
(formato di Access mi viene dato come risultato di una query su un Database)
2.
Fri Mar 07 19:39:16 CET 2003
(il formato standard di java.util.Date()
E' ovvio che affinche il confronto abbia senso occorre portare le date in
una stessa forma
Relativamente al tipo1 di cui sopra ho pensato ad un bean (visto che devo
richiamare i metodi in una JSP)
Ecco di seguito riposrtato il codice del bean per portare la data di tipo 1


(il formato standard di java.util.Date()
Not so difficult...
import java.util.*;
public class MSAccessDateConverter
{
	public static Date getJavaDate(String accessDate)
	{
		GregorianCalendar accessDateCalendar=
			new GregorianCalendar();
		int year=Integer.parseInt
			(accessDate.substring(0,4));
		int month=Integer.parseInt
			(accessDate.substring(5,7))+1;
		int day=Integer.parseInt
			(accessDate.substring(8,10));
		int hour=Integer.parseInt
			(accessDate.substring(11,13));
		int minute=Integer.parseInt
			(accessDate.substring(14,16));
		int second=Integer.parseInt	
			(accessDate.substring(17,19));
		accessDateCalendar.set
			(year,month,day,hour,minute,second);
		return accessDateCalendar.getTime();
	}
}
ora puoi fare, ad esempio:
	Date converted=MSAccessDateConverter.
		getJavaDate("2002-07-15 11:00:37");
Sull'oggetto converted, chè è una Date, puoi applicare
	compareTo(Date otherDate);
Claro?
-- 
Art. 11: L'italia ripudia la guerra come strumento di offesa
alla libertà degli altri popoli e come mezzo di risoluzione 
delle controversie internazionali. 

una stessa forma
secondo me il metodo in assoluto piů semplice č quello di utilizzare
il simpleDateFormat. specifichi il pattern di access, e fai un parse(
stringaAccess ) č hai il tuo oggetto Date con il quale eseguire i
confronti. Diciamo 5 o 6 righe di codice....