Sasch: Datumsberechnung

Mahlzeit,

ich möchte gern automatisch vom aktuellen Datum eine bestimmte (variable) Anzahl Tage abziehen.

Ich versuche das wie folgt:

java.util.Date today = new java.util.Date();
        int days   = Integer.parseInt(Parameter.getPar("glSysMessDay"));
        out.println(today-days);

Dabei erhalte ich aber immer folgende Fehlermeldung:

operator - cannot be applied to java.util.Date,int
                        out.println(today-days);
                                         ^
Ich kann also offensichtlich keine Integerwerte von nem Datumswert abziehen.
Wenn ich allerding die Variable _days_ durch ne feste Zahl, bspw. 10, ersetze funktioniert das ganze wunderbar.

Kann mir jemand verraten, wie wie ich das ganze trotzdem variabel halten kann und den Parameterwert aus der _glSysMessDay_ in die Berechnung reinkriege?

Danke für Eure Hilfe!!!

Gruß Sasch

  1. Hallo,

    ich möchte gern automatisch vom aktuellen Datum eine bestimmte (variable) Anzahl Tage abziehen.

    Ich kann also offensichtlich keine Integerwerte von nem Datumswert abziehen.

    Richtig.

    Wenn ich allerding die Variable _days_ durch ne feste Zahl, bspw. 10, ersetze funktioniert das ganze wunderbar.

    Also in meinem Java nicht.

    Kann mir jemand verraten, wie wie ich das ganze trotzdem variabel halten kann und den Parameterwert aus der _glSysMessDay_ in die Berechnung reinkriege?

    Guck dir mal die Klasse java.util.Calendar an. Die Klasse ist allerdings
    abstrakt. Eine nicht-abstrakte Subklasse ist java.util.GregorianCalendar.
    Sieh dir hier am besten die Methoden "getInstance()" und "add()" an.
    "getInstnace" liefert eine Instanz von Calendar mit der aktuellen
    Zeit und dem aktuellen Datum. Mit "add" kann man eine spezifizierbare
    Anzahl von Zeiteinheiten zum Calendar-Objekt hinzufügen oder abziehen.
    Näheres findest du in der API-Dokumentation. Bei konkreten Fragen
    einfach Fragen. (Allerdings habe ich mit Calendar selbst noch nichts
    gemacht.)

    Gruß
    Slyh

  2. Guten Morgen Sasch

    das kann auch nicht funktionieren. Aber das hier müßte deinen Ansprüchen genügen. In dem Calendar-Objekt, welches zurück geliefert wird, steht dein gewünschtes Datum. Das kannst du jetzt weiterverarbeiten.
    java.util.Calendar ist hier dein Freund.

    Grüße Hansjörg

    public Calendar getDay() {

    .
             .
             .
     int days = Integer.parseInt(Parameter.getPar("glSysMessDay"));

    Calendar calendar = Calendar.getInstance();
     calendar.roll(Calendar.DAY_OF_YEAR , - days);

    //zur Testausgabe:
     String year  = ""+calendar.get(Calendar.YEAR);
     String month = ""+(calendar.get(Calendar.MONTH)+1);
     String day   = ""+calendar.get(Calendar.DAY_OF_MONTH);
     if (calendar.get(Calendar.MONTH)<10)
         month = "0"+month;
     if (calendar.get(Calendar.DAY_OF_MONTH)<10)
         day = "0"+day;
            System.out.println( month+"/"+day+"/"+year);

    return calendar;
    }