GregorianCalendar

Status
Nicht offen für weitere Antworten.

ARadauer

Top Contributor
Bin grad fest am debuggen eines Fehlers. Machmal passt der Wert und machmal passt er nicht.

der code ist nicht von mir, aber ich muss den fehler finden
Code:
    cal.set(Calendar.WEEK_OF_YEAR, new Integer(planWoche.substring(4, 6)).intValue());
    cal.set(Calendar.YEAR, new Integer(planWoche.substring(0, 4)).intValue());
    cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
    cal.add(Calendar.DAY_OF_MONTH, this.getTageUeberBestelldatum());
    java.util.Date planDatum = cal.getTime();
Planwoche ist 200650, also KW 50 von 2006.
Wenn ich drüber laufen lasse, kommt 4. jan 2007 raus.
Wenn ich mir im Debugger immer cal ansehe mit cal.getTime() kommt der 28. Dez 2006 raus.

Ich verstehe wo der Fehler liegt. Wenn ich die KW setze, hab ich ein Datum. Wenn ich nun das Jahr ändere hab ich noch immer den selben Tag, dann passt aber die KW nicht mehr. Also zuerst Jahr dann KW setzen.

ABER warum bekomm ich beim zweimal durchlaufen zwei unterschiedliche Ergebnisse? Ändert mir ein Aufruf von getTime() wirklich das verhalten?

Und ich hab es auf einem Produktons Tomcat Server laufen. Bei mehrmaligen Aufrufen. Hab ich unterschiedliche Ergebnisse erhalten, ohne Aufruf von getTime(), wie kann das sein????
 
noch ein Beispiel

Code:
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Test {	

	public static void main(String[] args) {
			Calendar cal = new GregorianCalendar();
	     
    
	    cal.set(Calendar.WEEK_OF_YEAR, 50);
	    cal.set(Calendar.YEAR, new Integer(2006));
	    java.util.Date planDatum = cal.getTime();
	    System.out.println(planDatum);
	    
	    
	    Calendar cal2 = new GregorianCalendar();	    	    
	    cal2.set(Calendar.WEEK_OF_YEAR, 50);
	    cal2.getTime();
	    cal2.set(Calendar.YEAR, new Integer(2006));
	    cal2.getTime();
	    java.util.Date planDatum2 = cal2.getTime();
	    System.out.println(planDatum2);
	}
	
}

arg!!!
 
bei mir auch, gibts noch irgendwas bestimmtes, was man im Eclipse-Debugger anklicken muss?
 
hab jetz nochmal 2 Zeilen rausgenommen.

Also bei mir wird definitiv bei dem Code
Code:
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Test {	

	public static void main(String[] args) {
		Calendar cal = new GregorianCalendar();    
		
    cal.set(Calendar.WEEK_OF_YEAR, 50);
    cal.set(Calendar.YEAR, new Integer(2006));
    java.util.Date planDatum = cal.getTime();
    System.out.println(planDatum);  
    
    Calendar cal2 = new GregorianCalendar();	    	    
    cal2.set(Calendar.WEEK_OF_YEAR, 50);
    cal2.getTime();
    cal2.set(Calendar.YEAR, new Integer(2006));
    cal2.getTime();
    java.util.Date planDatum2 = cal2.getTime();
    System.out.println(planDatum2);
	}
	
}

Wed Dec 13 13:22:10 CET 2006
Sun Dec 10 13:22:10 CET 2006

ausgegeben. (Java 5.0 und java 6) ohne debugger
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben