PDA

Visualizza la versione completa : Java : ereditare Date


bDaniele
08-07-2002, 15:47
ciao a tutti...

ho la necessità di creare un oggetto date a partire da una stringa, posso ereditare la classe date e fare un overload del costruttore?

se si come faccio???

es:
class MyData extends Date{
public MyData(String data){
super(anno,mese,giorno);
int giorno = Integer.parseInt(data.substring(1,2));
int mese = Integer.parseInt(data.substring(4,5));
int anno = Integer.parseInt(data.substring(6,10));

}
}

come faccio a chiamare il costruttore con i valori integer quando li devo ancora copiare dalla stringa??

Maldito
08-07-2002, 15:49
ho dovuto fare la stessa cosa per una mia classe date.. se vuoi te la posto :ciauz:

bDaniele
08-07-2002, 15:49
Magari!!!!

ti ringrazio tanto

Maldito
08-07-2002, 15:52
anzi...

la classe è troppo grossa, ti posto un consiglio che faccio prima ( la mia era un estensione della java.sql.Date )


dunque estendi la Date e crei un costruttore con parametro String che non fa altro che

public Date( String data ){

super( geDateFromString( data ).getTime() );

}

bDaniele
08-07-2002, 15:54
ci provo subito

bDaniele
08-07-2002, 15:55
dove è contenuta "getDateFromString"??

mi da errore.

pippo75
08-07-2002, 16:40
Prova così:


SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH.mm.ss");
Date d;
// strTime è la stringa che contiene la data
try{
d = sdf.parse(strTime);
}
catch(Exception e){
d = new java.util.Date();
}




mandi mandi :)

Maldito
08-07-2002, 16:46
:gren: :gren: :gren:

mi devi scusare... non ti ho postato anche il getDateFromString artigianale... che prende anche parte della data come argomento e la completa con mese e anno attuali

fatti una costante SEPARATORE private dove ci metti il separatore...

eccolo


private static Date geDateFromString( String data ){

Date ritorno;

data = data.trim();

return completamentoAutomatico( data );

}


private Date completamentoAutomatico(String data){

if( data.length() > 10 )
//throw new VEDI TU!
char[] dataArray = data.toCharArray();
int stato = 1;
int gg = 0;
int mm = 0;
int aaaa = 0;

for( int j = 0; j < dataArray.length; j++ ){

if( dataArray[ j ] == SEPARATORE){

stato++;
j++;

}

if( stato == 1 ){

gg = gg * 10 + Integer.parseInt( "" + dataArray[ j ] );

}else if( stato == 2 ){

mm = mm * 10 + Integer.parseInt( "" + dataArray[ j ] );

}else if( stato == 3 ){

aaaa = aaaa * 10 + Integer.parseInt( "" + dataArray[ j ] );

}

}

if( stato > 3 )
//throw new VEDI TU!!
if( mm == 0 ){
mm = new java.util.GregorianCalendar().get( java.util.GregorianCalendar.MONTH );
}else{
mm--;
}

if( aaaa == 0 ){
aaaa = new java.util.GregorianCalendar().get( java.util.GregorianCalendar.YEAR );
}else if( aaaa < 100 ){
aaaa += 2000;
}

return new Date( new java.util.GregorianCalendar(aaaa,mm,gg).getTime() );

}

Loading