PDA

View Full Version : Java e Date, Time, SimpleDateFormat e amici loro...


Scoperchiatore
21-03-2004, 11:00
Premettendo che IMHO sono implementati "male" nelle API di java, perchè troppo vasti, volevo chiedervi come potrei fare a risolvere questo problemino:

L'utente inserisce un orario (es: 12:30) dalla tastiera e io lo devo parsare (trasformare) in un oggetto Date o Time (meglio Date).
Inoltre devo indicare all'utente il formato in cui inserirlo.

So fare l'opposto (da Date a String), anche se non ho ben capito come potrei nascondere l'orario se mi interessasse solo la data, o viceversa.

Quindi, in parole povere, come si fa a creare una Date da stringa , se la date contiene solo l'orario?

Mazza2
21-03-2004, 11:09
Date data = DateFormat.parse(String s)

Scoperchiatore
21-03-2004, 12:39
Originariamente inviato da Mazza2
Date data = DateFormat.parse(String s)

se parso 11.20 mi dà unparsableDateException :muro:

PGI
21-03-2004, 14:23
In effetti in Java ci sono forse un po' troppi modi per farlo, pochi però non sono più "deprecated". Uno dei non-deprecated è il seguente.


public class Applicazione {
public static void main(String[] a) {
JTextField field = new JTextField();
String text = JOptionPane.showInputDialog(null);

SimpleDateFormat dateFormatter = new SimpleDateFormat("kk.mm");
dateFormatter.parse(text, new ParsePosition(0));

Calendar input = dateFormatter.getCalendar();
Calendar now = GregorianCalendar.getInstance();
now.set(Calendar.HOUR_OF_DAY, input.get(Calendar.HOUR_OF_DAY));
now.set(Calendar.MINUTE, input.get(Calendar.MINUTE));

System.out.println(now.getTime());
System.exit(0);
}
}


il formato "kk.mm" è documentato nella classe SimpleDateFormat, la combinazione di differenti marcatori genera centinaia di combinazioni, scegli quella che preferisci.

l'input:

11.20

produce l'output:

Sun Mar 21 11:20:17 CET 2004