# Datum berechnen



## SeeSharpNewBee (31. Juli 2007)

Hi,

ich stehe wieder einmal vor einem Problem, und zwar:

Für mein Programm soll ein Benutzer bestimmte Aktionen nur vom 1 und bis zum Letzten im Monat durchführen können, jetzt meine Problem:

Gregoriancalendar gibt mir für jeden Monat 31 Tage aus, was ja nicht stimmt, außerdem soll einbezogen werden ob das aktuelle Jahr ein Schaltjahr ist oder nicht. WIe geh ich das am besten an?

Ich habe zum Testen ein Beispiel aus "Java ist auch eine Insel" genommen und das gibt mir die 31 Tage / Monat aus.


```
Calendar cal = Calendar.getInstance(); 
 
System.out.println( cal.getTime() ); 
 
for ( int month = Calendar.JANUARY; 
      month <= cal.getActualMaximum( Calendar.MONTH ); 
      month++ ) 
{ 
  cal.set( Calendar.MONTH, month ); 
 
  System.out.printf( "%d. Monat hat %d Tage%n", 
                       month + 1, 
                       cal.getActualMaximum(Calendar.DAY_OF_MONTH) ); 
  }
```

Bitte um Hilfe, danke!


----------



## shutdown (31. Juli 2007)

Dass dein Code nirgendwo die Klasse GregorianCalendar enthält, ist dir bewusst?


----------



## SeeSharpNewBee (31. Juli 2007)

Mein Gott, ersetz "Calendar" durch GregorianCalendar, dann hast du das selbe Ergebnis!

Ist jetzt nicht böse gemeint, aber bringt dein Kommentar irgendjemand der auch auf diese Frage eine Antwort such irgendwas?

Danke!


----------



## Thomas Darimont (31. Juli 2007)

Hallo,

schau mal hier:
http://www.tutorials.de/forum/java/248396-validierung-des-datums.html

Gruß Tom


----------



## shutdown (31. Juli 2007)

Also:
1. Gehe ich davon aus, dass du dich mit dem Code beschäftigt hast, den du verwenden möchtest.
2. GregorianCalendar ist eine andere Klasse als Calendar, zwar davon abgeleitet, aber mit anderer Implementierung.
3. Beim Versuch, deine Frage zu verstehen, komme ich zu folgendem Ergebnis:
Du möchtest, dass deine Benutzer etwas innerhalb EINES bestimmten Monats machen können. Da gibt es die Methoden before() und after(). Einfach 2 Daten festlegen, die den Zeitraum eingrenzen und dann dein Prüfdatum mit diesen vergleichen, ob dein Datum dazwischen liegt.


----------



## SeeSharpNewBee (1. August 2007)

Hat sich eigentlich erledigt, hab das jetzt so gelöst, das ich in die Datenbank einfach nur das Monat eintrage, und dann mit dem Monat des aktuellen Datums vergleiche!

@shutdown: Was hätte ich davon mit .bevore() und .after() zu arbeiten? Das Programm soll dynamisch laufen, also wenn sich ein Benutzer für einen Bestimmten Dienst anmeldet, dann soll das genau vom Ersten bis zum Letzten des Monats sein, indem er/sie sich angemeldet hat. Bei .bevore() und .after() müsste ich zusätzlich noch irgendwelche Daten angeben.

Da ist es doch sinnvoller wenn ich als Startdatum das Registrierungsdatum und als Enddatum das Datum vom Letzten im Monat eintrage, oder wie ich es gelöst hab das ich eben nur das aktuelle Monat eintrage und vergleiche ob das Monat mit dem in der Datenbank übereinstimmt!


----------



## Thomas Darimont (1. August 2007)

Hallo,

schau mal hier:
http://www.tutorials.de/forum/java/238585-den-letzten-tag-eines-monats-jahres-ermitteln.html

```
/**
 * 
 */
package de.tutorials;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * @author Thomas.Darimont
 * 
 */
public class LastDayOfMonthExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        GregorianCalendar gregorianCalendar = new GregorianCalendar();
        gregorianCalendar.set(Calendar.DAY_OF_MONTH, 1);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM yyyy");
        for (int i = 0; i < 10; i++) {
            System.out.printf("Last day in Month:%s is:%s \n", simpleDateFormat
                    .format(gregorianCalendar.getTime()), gregorianCalendar
                    .getActualMaximum(Calendar.DAY_OF_MONTH));
            gregorianCalendar.add(Calendar.MONTH, 1);
        }
    }
}
```

Ausgabe:

```
Last day in Month:August 2007 is:31 
Last day in Month:September 2007 is:30 
Last day in Month:Oktober 2007 is:31 
Last day in Month:November 2007 is:30 
Last day in Month:Dezember 2007 is:31 
Last day in Month:Januar 2008 is:31 
Last day in Month:Februar 2008 is:29 
Last day in Month:März 2008 is:31 
Last day in Month:April 2008 is:30 
Last day in Month:Mai 2008 is:31
```

Gruß Tom


----------

