Newsgroup: it.comp.java
Titolo: Informazioni sulla conversione di Date!

Buongiorno a tutti,
mi presento;
sono una principiante con il linguaggio Java, mentre conosco
diversi altri linguaggi (sono circa 18 anni che faccio analisi e
programmazione)....
Ho letto la JDK 5.0 Documentation quindi non sono proprio a digiuno 
ed avrei un paio di domande da porvi.
Gradirei chiedervi le seguenti inforormazioni:
1) Se in un campo stringa ho una Data come posso convertirla in 
   formato Data per poter poi estrarrne i campi giorno, mese e anno ?
   Esempio: 
   String strData = "01/01/2005"; 
2) E se volessi formattarla come "YYYYMMDD" ?
3) E per sapere se l'anno e' Bisestile (Leap Year).
Grazie a tutti chi mi puo' fornire queste info, spero + avanti nel
tempo di poter ricambiare con le mie conoscenze....
Lucilla.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

>   String strData = "01/01/2005";
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); <--occhio a 
maiusc/minusc
Date d = df.parse(strData);
df = new SimpleDateormat("yyyyMMdd");
String out = df.format(d);
riguardo al bisestile, al volo non lo so!
-- 


Grazie per la risposta....
Mi sembra di capire che in questo caso con la SimpleDateFormat
formatto la Data in dd/MM/yyyy, ma se io non conoscessi il formato
della Stringa che ricevo (strData) e dovessi convertirla con il
formato delle Opzioni Internazionali del PC come potrei fare ?
Mi spiego meglio...ricevo in input una stringa che verosimilmente
ha il formato dd/MM/yyyy, ma se cosi' non fosse devo convertire
la stringa nel formato delle Opzioni Internazionali.
Tutto cio' per poi poter estrapolare anno, mese e giorno.
Ciao e grazie per la risposta.


sono andato a vedere e mi rispondo da solo: la classe GrogorianCalendar ha 
un metodo:
public boolean isLeapYear(int year)
-- 


> E per sapere se l'anno e' Bisestile (Leap Year)
java.util.GregorianCalendar gc = new java.util.GregorianCalendar();
gc.setTime(tuaData);
gc.isLeapYear(gc.get(Calendar.YEAR)); //torna un boolean
Se non conosci il formato con cui ti arriva la data come cavolo fai a
sapere se ti arriva una cosa del genere: "10/05/1995" se il '10' e' il
giorno o il mese?

 wrote in message
news:1129544789.9...@g14g2000cwa.googlegroups.com



Per "Opzioni internazionali" intendi questo?
"2001-07-04T12:08:56.235-0700"
quindi:
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
come stringa di formattazione.
Oppure..
intendi che ti arriva una stringa con una data, ma non sai in che
formato e', ti serve una funzione che la smandruppa e te la formatta in
come vuoi tu?
In tal caso mi sa che torniamo al precedente problema.
se ti arriva una roba "03/04/1996" senza dirti che formato e', sei nei
guai perche' e' ambigua ovvero puo' voler dire 3 aprile o 4 marzo
O peggio "03/04/05"....
3 aprile 2005 ?
4 marzo 2005?
5 aprile 2003 ?
4 maggio 2003 ?
etc....
Fai un esempio concreto....
Ps.
Cosa intendevi con "formato excel" ?
Ciao

Il Metodo della mia Classe e' fatto nel seguente modo:
public String ConvertiData(String sData, String sFormato){
    <istruzioni>
}
Chi lo chiama puo' scrivere:
1) Converti("01022005","DDMMYYYY");
2) Converti("01/02/2005", "Formato Excel");
3) altro....
Se vengo chiamata come nel punto 2) ho una stringa con la Data
ed una con il Formato.
In realta' il formato mi dice solo che il formato e' uguale a quello
delle Date in Excel quindi devo considerare le Opzioni Internazionali
per sapere se la Data che mi e' stata passata e' corretta.
Quindi 01/02/2005 deve corrispondere al formato specificato nele 
Regional Options del sistema. 
Spero stavolta di essere stata chiara.
Ciao.
Lucilla.



 2) E se volessi formattarla come "YYYYMMDD" ?
Tramite java.util.SimpleDateFormat passi dalla conversione da String a
Date e viceversa.
Dopodichè, crei un java.util.Calendar, gli assegni la Date e lo usi
per convertire in giorno, mese e anno di calendario.

dunque nella doc di SimpleDateFormat c'è un costruttore senza
parametri che dice di usare il default della lingua locale dell'utente.
Io ho provato e mi usa il formato italiano anche se ho windows in
inglese, perche' ho settato come impostazioni di data e ora e di
tastiera l'italiano.
Idem fa excel (ho excel in inglese ma di default le date me le mette in
italiano).
il formato che usa pero' e':
"17/10/05 14.48"
con l'ora....
infatti se fai:
SimpleDateFormat sf = new SimpleDateFormat();
System.out.println(sf.toPattern());
ti restituisce
"dd/MM/yy H.mm" (per l'italiano)
queste sono le impostazioni del mio windows...
se a te non ti arriva l'ora, mi sa che devi modificare la stringa a
manella prima di darla in pasto al SimpleDateFormat di default