Gregorian Calender Monatsgrenze

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo, habe ein Problem mit dem GregorianCalendar:

Ich muss auf ein GregorianCalendar Objekt Tage dazuaddieren, was eigentlich auch ganz gut funktioniert.

Code:
   GregorianCalendar date= new GregorianCalendar(jahr, monat, tag);
            GregorianCalendar date2=new GregorianCalendar (jahr2,monat2,tag2);
            while(date.compareTo(date2)<=0){
               date.set(date.get(Calendar.YEAR),date.get(Calendar.MONTH), date.get(Calendar.DATE)+7);
            }

Nur wenn das Addieren der Tage die Monatsgrenze überschreitet, rechnet er falsch! Zum Beispiel möchte ich vom 22.2.08 bis zum 28.3.08 immer ein neues Datum für +7 Tage haben. Funktioniert auch ganz gut bis zur Monatsgrenze!

Datum von: 22.2.2008 bis 28.3.2008 <----- Ausgangswert (wird nicht errechnet)
+7 Tage : 29.2.2008
+7 Tage : 5.3.2008
+7 Tage : 12.3.2008
+7 Tage : 19.3.2008
+7 Tage : 26.3.2008

Ist das ein Bug, oder mache ich irgendwas falsch?
 
G

Gast

Gast
Ja und? Mir ist klar, dass wir ein Schaltjahr haben! Aber sollte der GregorianCalendar das nicht trotzdem meistern? Ich meine, Freitag +7 Tage sollte halt schon Freitag bleiben!

Und brauchst mich auch gar nicht so blöd von der Seite anreden, sonst hätte ich nicht gefragt!
 
G

Gast

Gast
Und nochwas! Hab das gleiche mit 2009 probiert! Auch dort tritt das Problem auf!
 
G

Gast

Gast
Nein, scheint leider immer noch nicht zu funktionieren!

22.2.2008 bis 28.3.2008 <----- gegeben

29.2.2008
5.3.2008
12.3.2008
19.3.2008
26.3.2008

Code sieht ungefähr (gekürzt) so aus:
Code:
while(date.compareTo(date2)<=0){
    date.add(Calendar.DAY_OF_MONTH, 7);
}
 

Quaxli

Top Contributor
Bei mir funzt das tadellos. Muß an Deinem Code liegen.

Code:
import java.util.*;


public class Test2{

	private static final long	serialVersionUID	= 1L;

	public static void main(String[] args){
		new Test2();
	}
		
	public Test2(){
		GregorianCalendar gc = new GregorianCalendar();
		
		gc = nextWeek(gc);
		gc = nextWeek(gc);
		gc = nextWeek(gc);
		gc = nextWeek(gc);
	}
	
	private GregorianCalendar nextWeek(GregorianCalendar gc){
		gc.add(Calendar.DAY_OF_MONTH, 7);
		
		int d = gc.get(Calendar.DAY_OF_MONTH);
		int m = gc.get(Calendar.MONTH);
		int y = gc.get(Calendar.YEAR);
		m++;
		
		System.out.println(d + "/" + m + "/" + y);
		
		
		return gc;
	}
	
}
 

ARadauer

Top Contributor
mhn komisch, dass das monat 0 basierend ist, hast du? (jan =0, feb =1...)

@param month the value used to set the <code>MONTH</code> calendar field in the calendar.
* Month value is 0-based. e.g., 0 for January.

Code:
 /**
     * Value of the {@link #MONTH} field indicating the
     * first month of the year.
     */
    public final static int JANUARY = 0;
 

Quaxli

Top Contributor
Das IST so ;) und es wurde berücksichtigt:

int m = gc.get(Calendar.MONTH);
int y = gc.get(Calendar.YEAR);
m++; <<< Monat einen rauf zählen
 
G

Gast

Gast
Funktioniert das bei dir auch mit dem 29.2? Also dass du z.B. vom 25.2 7 Tage addierst und dann 3.3 raus kommt?
 

ARadauer

Top Contributor
ja funktioniert:

das ist FALSCH:
Code:
GregorianCalendar date= new GregorianCalendar(2008,2,25); 
	date.add(Calendar.DATE, 7);
	System.out.println(date.get(Calendar.DATE));
Jannuar ist 0, Februar ist 1, ...

das funktioniert,
Code:
	GregorianCalendar date= new GregorianCalendar(2008,1,25); 
//GregorianCalendar date= new GregorianCalendar(2008,Calendar.FEBRUARY,25); 
	date.add(Calendar.DATE, 7);

	System.out.println(date.get(Calendar.DATE));

//das ist 1
System.out.println(Calendar.FEBRUARY);
 
G

Gast

Gast
Danke funktioniert jetzt! Lag einzig und allein daran, dass Februar 1 ist und nicht 2 im Greg.Calendar! ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Problem bei der Verwendung von Gregorian Calender Java Basics - Anfänger-Themen 3
J gregorian calender zu java.sql.timestamp problem Java Basics - Anfänger-Themen 3
E Gregorian Calendar übergibt falschen Wochentag Java Basics - Anfänger-Themen 2
B Klassen Gregorian Calendar Java Basics - Anfänger-Themen 3
G Gregorian Calendar Eingabeprüfung Java Basics - Anfänger-Themen 4
G Gregorian Calendar aus toString() Ausgabe wiederherstellen Java Basics - Anfänger-Themen 4
W Gregorian Calendar Java Basics - Anfänger-Themen 5
S Konvertieren von Gregorian Calendar nach Date ? Java Basics - Anfänger-Themen 6
L Gregorian Calendar Problem Java Basics - Anfänger-Themen 7
T Datentypen Calender/Gregorianisch/Julianisch/JDN Konvertierung Java Basics - Anfänger-Themen 4
E Calender - Equals Problem Java Basics - Anfänger-Themen 14
G Date - Calender | "Vergleich" Java Basics - Anfänger-Themen 3
M Datentypen Calender TimeInMillis - long number erzeugen? Java Basics - Anfänger-Themen 2
T Calender / DateFormat macht plus ein Monat Java Basics - Anfänger-Themen 3
N Calender Java Basics - Anfänger-Themen 3
G Calender Programmieren Java Basics - Anfänger-Themen 7
C Calender set Methode beim Tag funzt nicht . Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben