PDA

View Full Version : [java]problema formato data


misterxxitalia
14-03-2008, 23:08
ciao a tutti grazie anche a degli aiuti ho creato un metodo che mi gestisca il formato
di una data ecco il metodo...
public void setData(String dataString) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
this.data = sdf.parse(dataString);

}


public Date getData() {

return this.data;
}

il problema che se gli do in input una data in formato gg/mm/aaaa il metodo mi restituisce una data in un formato non utilizzabile ovvero esempio...Fri Dec 02 00:00:00 CET 1988... consigli??

vladix
14-03-2008, 23:23
niente di strano , e quello che gli chiedi di fare ...
se vuoi leggere la data nel formatto "dd/MM/yyyy" devi formattare la data
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy");
String data = f.format(bean.getData());

misterxxitalia
14-03-2008, 23:37
scusa la variabile "bean" a cosa serve?posso mettere tutto in getData()?sarebbe mooolto meglio!!ho provato a scrivere questo ma non cambia nulla...
}
public void setData(String dataString) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
this.data = sdf.parse(dataString);

}


public String getData() {
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy");
String datainput = f.format(data);
return datainput;//this.data;
}

vladix
14-03-2008, 23:51
posso mettere tutto in getData()?

si ma invecce di una data deve tornare una stringa

public String getData() {
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy");
return f.format(this.data);
}


scusa la variabile "bean" a cosa serve?

bean non e una variabile , ho pensato ( ho fatto male ) che e il tuo oggetto che contiene la variabile date con i relativi get e set (quindi un "bean" )

misterxxitalia
15-03-2008, 00:04
ecco infatti funzica non me ero accorto che a video stampavo quella data strana (data non formattata)mentre se uso il metodo getData() mi ritorna una stringa normale!grazie!scusa posso chiederti un'altra cosa?se non ti dispiace...devo stampare a video tutti gli appuntamenti che ho in una certa data....gli appuntamenti sono caricati in vector e ogni appuntamento è conposto cosi....
class Agenda
{
private Date data;
private String ora;
private String nome;
private String cognome;
private String descrizione;
private String priorita;

Agenda(String data, String ora, String nome, String cognome, String descrizione, String priorita) throws InserimentoErratoException, IOException,ParseException{

this.setData(data);
setOra(ora);
setNome(nome);
setCognome(cognome);
setDescrizione(descrizione);
setPriorita(priorita);
}
puoi darmi almeno un aiuto?sappi che per stampare ho modificato il metodo toString() che mi permette di visualizzare il mio nominativo..

vladix
15-03-2008, 00:18
ho modificato il metodo toString()

:asd: e cosi che devi fare ( o e una delle opzioni) , sovrascrivi il metodo toString
che ti ritorna tutti i dati del agenda

public String toString(){
return nome + " | " + cognome + " | "+ ..... il resto dei dati
}


...devo stampare a video tutti gli appuntamenti che ho in una certa data....

basta fare un controllo sulla data ... :fagiano:

misterxxitalia
15-03-2008, 00:22
no no il metodo to string va benissimo è solo che non ho la piu pallida idea su come fare il controllo...
esempio questo mi stampa tutti i nominativi...
public void stampaArrayList()
{
for (Enumeration e = nominativi.elements();e.hasMoreElements();)
for (int w =0; w < nominativi.size();w++)
{

System.out.println("indice nel vettore:"+w+" "+e.nextElement().toString());
}
}

vladix
15-03-2008, 00:41
boh dipende , se il controllo e su una sola data puoi fare


for(Agenda a : vettoreDiAgende){
if(a.getDate().equals(unaData)){
System.out.println(a);
}
}


se invecce devi fare il controllo su un range di date ti conviene modificare il metodo getDate chwe ritorni una data ... e trsaformarla in stringa solo quando la devi stampare.
e il controllo lo puoi fare + o meno cosi



for(Agenda a : vettoreDiAgende){
if(getData().getTime() > dataMinima.getTime() || getData().getTime() < dataMassima.getTime() ){
System.out.println(a);
}
}

misterxxitalia
15-03-2008, 00:56
no no il controllo su una sola data gli do la data in input e lui mi stampa tutti gli appuntamenti in quella data..
scusa ma...
for(Agenda a : vettoreDiAgende){
if(a.getDate().equals(unaData)){
System.out.println(a);
}
}
Agenda a : appuntamenti (il nome del vettore) qui cosa fai inizializzi il vettore??
poi se do un System.out.println(a) non stampa nulla (per stampare devo usare qualche metodo esempio toString() modificato).....
guarda il mio metodo che ho scritto ovvero StampaArrayList()...carico tutto il v ettore nell'enumeration e poi lo stampo invece io vorrei caricarci solo quello che voglio io..oppure consigliami tu io sono a corto di idee!!

vladix
15-03-2008, 01:16
poi se do un System.out.println(a) non stampa nulla (per stampare devo usare qualche metodo esempio toString() modificato)....
se hai sovrascritto il metodo to string , non serve chiamarlo , xche e viene invocato automaticamente


Agenda a : appuntamenti (il nome del vettore) qui cosa fai inizializzi il vettore??
questo tipo di ciclo for e stato introdotto dalla versione 5 , ed e stato progettato x le collezioni , ed e composto da 2 blocchi : for (dichiarazione (della variabile che ci interessa) : espressione (collezione o array da ciclare) )

ma non ho capito il metodo StampaArrayList , xche usi 2 cicli for annidati se stampi gli elementi del ciclo esterno , quindi non fai altro che stampare lo stesso risuòltato x "nominativi.size()" volte

vladix
15-03-2008, 01:40
anzi .. a dire la verita stai facendo delle operazioni inutili (cioe un ... bordello :asd:
qui "for (Enumeration e = nominativi.elements();e.hasMoreElements()" trasformi il vetore in una Enumeration ... per poi tornare a ciclare sul vettore "for (int w =0; w < nominativi.size();w++) " e alla fine stampi gli elementi della Enumeration , :eek:

prova cosi che e + semplice ( e funzionante )

public void stampaArrayList() {
for (int i = 0; i < nominativi.size();i++){
if((nominativi.get(i)).getData().equals(unaData))
System.out.println("indice nel vettore:"+w+" "+nominativi.get(i));
}
}


e il vettore lo definisci cosi

Vector<Agenda> nominativi = new Vector<Agenda>();

misterxxitalia
15-03-2008, 14:13
e lo so ma il vincolo è che non posso usare java 5 devo programmare con un linguaggio java di 10 anni fa x motivi scolastici!sennò hai perfettamente ragione si fa
molto prima!!