wurde hier schon oft gefragt, leider konnten mir bisherige posts nicht weiterhelfen.
Habe eine JSpinner-Komponente mit SpinnerDateModel als editor. Dieser ist so konfiguriert, dass er Daten im Format dd.MM.yy anzeigt bzw. auswählen lässt.
Möchte nun schauen, ob das eingegebene Datum einen Tag später ist als heute. Und bekomme das mit dem ganzen rumgeparse und formatiere und den tausend Klassen, die es im Bezug aufs Thema Datum gibt nicht ganz hin.
Wenn ich nun einfach das Datum mit der methode datum.after(new Date()); vergleiche, dann wird er natürlich auch die Sekunden einbeziehen. Ich brauche jedoch nur den Wochentag,Monat,Jahr.
Hier erstmal der JSpinner:
Code:
private JSpinner datumBewerbertag;
private SpinnerDateModel datumBewerbertagModel;
...
public WizardSeite1()
{
...
//Anzahl Bewerber
datumBewerbertagModel = new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_MONTH);
datumBewerbertag = new JSpinner(datumBewerbertagModel);
datumBewerbertag.setName("datumBewerbertag");
JComponent editor = new JSpinner.DateEditor(datumBewerbertag, "dd.MM.yy");
datumBewerbertag.setEditor(editor);
...
Ich hab schon dutzend verschiedene Kombinationen probiert. Wenn ich z.B. versuche mittels einem SimpleDateFormat-Objekts den String zu parsen, dann klappt das nicht. Bekomme immer ne Exception:
Code:
Date input = datumBewerbertagModel.getDate();
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yy");
try {
sdf.parse(input.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return input.toString();
denken?
input.toString() wird dir sowas wie "Mon Nov 17 13:07:06 CET 2008" liefern, dieser Text passt doch nicht zu deinem Format,
dass es eine Exception gibt ist ganz normal
mit der Calendar-Klasse könntest du Befehle aufrufen wie 'setze Stunde auf 0'
wenn es mit dem Format sein muss, dann ist das vielleicht was für dich:
Code:
public class Test
{
public static void main(String[] args)
throws Exception
{
Date d = new Date();
System.out.println(d);
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yy");
System.out.println(sdf.format(d));
Date d2 = sdf.parse(sdf.format(d));
System.out.println(d2);
}
}
-----
Ausgabe:
Mon Nov 17 13:07:06 CET 2008
17.11.08
Mon Nov 17 00:00:00 CET 2008
/* Converts a date into a date with only YEAR, MONTH and DATE fields set
* (no hour, minute second,...).
* This allows us to see if to dates are equal independantly of other fields.
*/
private Date convertToDateOnly(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
Calendar temp = DateChooserModel.dateOnlyCalendar();
temp.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE));
return temp.getTime();
}
Code:
/**
* We set only YEAR, MONTH and DATE fields (no hour, minute, second, ...).
* This allows us to see if to dates are equal independantly of other fields.
*
* @return a Calendar instance where only the fields YEAR, MONTH and DATE are set
*/
public static Calendar dateOnlyCalendar() {
Calendar dateOnly = Calendar.getInstance();
dateOnly.clear();
Calendar cal = Calendar.getInstance();
dateOnly.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE));
return dateOnly;
}
Danke André, das klingt nach genau dem, was ich suche. Werds mal ausprobieren. Dachte, dass es da bereits vorhandene methoden gibt, die ich bisher nicht gefunden hab.