GregorianCalendar glaubt mir alles wieso!

Status
Nicht offen für weitere Antworten.

CentroN

Mitglied
Moin ich spiele gerade mit dem Gregorian Calendar rum und verstehe scheinbar das Prinzip nicht. Ich erze8uge eine neue Instanz von GregorianCalendar und die glaubt mir alles. Wenn ich sage wir haben Monat 17, dann ist das Monat 17. Wieso merkt der nicht, dass es keinen Monat Nr. 17 gibt. und wie kann ich die Ausgabe auf Jahr, Monat, Day, Stunde, Minute beschränken.

Code:
class Main {	
	public static void main (String[] args) {
			Greg cal = new Greg(1996, 17, 14, 12, 53);
			System.out.println(cal.caleG());
	}
}

Code:
import java.util.GregorianCalendar;

public class Greg {
    private GregorianCalendar cal;
    private int year;        // Datum u. Zeitangaben der Mail
    private int month;
    private int day;
    private int hours;
    private int minute;
	
	public Greg (int year, int month, int day, int hours, int minute) {
		this.year = year;
		this.month = month;
		this.day = day;
		this.hours = hours;
		this.minute = minute;
	}
	
	public GregorianCalendar caleG() {
		return (cal = new GregorianCalendar(year, month, day, hours, minute));
	}
}

Danke für die Hilfe:

Ziel: Datumskontrolle bei der Eingabe, Ausgabe beschränkt auf einegegebene Paramter !!!!!!😉
 
CentroN hat gesagt.:
Moin ich spiele gerade mit dem Gregorian Calendar rum und verstehe scheinbar das Prinzip nicht. Ich erze8uge eine neue Instanz von GregorianCalendar und die glaubt mir alles. Wenn ich sage wir haben Monat 17, dann ist das Monat 17. Wieso merkt der nicht, dass es keinen Monat Nr. 17 gibt. und wie kann ich die Ausgabe auf Jahr, Monat, Day, Stunde, Minute beschränken.
Siehe Calendar#setLenient(false). Damit werden nur gültige Datums/Zeitangaben akzeptiert.
Als Default ist es true, so dass z.B. der 31 November (November hat ja 30 Tage) zum 1 Dezember wird.

Für formatierten Ausgabe musst du einen Formatter verwenden. z.B. SimpleDateFormat oder MessageFormat.
 
Ich bekomme nun leider folgende Fehlermeldung die sicher dadurch entsteht, setLemniet() richtig einsetze


C:\Dokumente und Einstellungen\Administrator\Desktop>java Main
Exception in thread "main" java.lang.NullPointerException
at Greg.caleG(Greg.java:29)
at Main.main(Main.java:8)

Code:
import java.util.GregorianCalendar;

public class Greg {

    private GregorianCalendar cal; 

    private int year;        // Datum u. Zeitangaben der Mail
    private int month;
    private int day;
    private int hours;
    private int minute;
	
	
	public Greg (int year, int month, int day, int hours, int minute) {
		this.year = year;
		this.month = month;
		this.day = day;
		this.hours = hours;
		this.minute = minute;
	}
	
	public GregorianCalendar caleG() {
		cal.setLenient(false);
		cal = new GregorianCalendar(year, month, day, hours, minute);
		return cal;
	}

}

wo ist der Fehler? Wie wende ich das kpnkret auf diesen Fall und wie fange ich ggf. die Exception ab. Der Fehler kommt auch wenn ich gültige Werte eingebe.
 
Die Klasse Greg scheint korrekt zu sein. Könntest Du den Code der Klasse Main posten?
 
Da habe ich zu oben nichts geändert.

Code:
class Main {	
	
	public static void main (String[] args) {
		
			
			Greg cal = new Greg(1996, 17, 14, 12, 53);
			
			System.out.println(cal.caleG());
		
	}
}
 
ich habe die Zeilen


Code:
cal = new GregorianCalendar(year, month, day);
cal.setLenient(false);

nun so stehen und dennoch kommt als Ausgabe Monat 17 und ich will hier aber einen Hinweis das es 17 nicht gibt und eine Exception geworfen wird.[/quote]
 
Code:
 public GregorianCalendar caleG() { 
      cal.setLenient(false); 
      cal = new GregorianCalendar(year, month, day, hours, minute); 
      return cal; 
   }

kann nicht gehen wenn oben nur gregoriancalendar cal; steht.
 
cal.set(Calendar.DATE, day);

--> Diese VoidMethode gibt nichts zurück wie prüfe ich, ob das klappt was da gemacht wird.

Code:
import java.util.*;

public class Greg {

	private GregorianCalendar cal; 

    private int year;        // Datum u. Zeitangaben der Mail
    private int month;
    private int day;
    private int hours;
    private int minute;
	
	
	public Greg (int year, int month, int day, int hours, int minute) {
	
		
		this.year = year;
		this.month = month;
		this.day = day;
		this.hours = hours;
		this.minute = minute;
		
		
		
	}
	
	public Calendar caleG() {
		
		
		cal = new GregorianCalendar();
		cal.setLenient(false);
		cal.set(Calendar.DATE, day);
		cal.set(Calendar.MONTH, month);
		cal.set(Calendar.YEAR, year);
		showDate(cal);
		return cal;
	
	}
	
	public static void showDate(Calendar cal)
  {
     String ret = "";
     int    value = cal.get(Calendar.DAY_OF_WEEK);

     switch (value) {
		case Calendar.SUNDAY:
			ret += "Sonntag";
				break;
		case Calendar.MONDAY:
		   ret += "Montag";
		   break;
		case Calendar.TUESDAY:
		   ret += "Dienstag";
		   break;
		case Calendar.WEDNESDAY:
		   ret += "Mittwoch";
		  break;
		case Calendar.THURSDAY:
		   ret += "Donnerstag";
		   break;
		case Calendar.FRIDAY:
		  ret += "Freitag";
		   break;
		case Calendar.SATURDAY:
		   ret += "Samstag";
		   break;
    }
    ret += ", den ";
    ret += cal.get(Calendar.DATE) + ".";
    ret += (cal.get(Calendar.MONTH)+1) + ".";
    ret += cal.get(Calendar.YEAR);
    System.out.println(ret);
  }

}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben