Kalendersystem entwickeln

Mino1337

Mitglied
Hallo,

Ich möchte gern mein erstes Größeres Java Projekt starten da ich gemerkt habe das ich sehr schwer durch kleine Übungen lerne.
Das Projekt benötigt als Grundlage einen Kalender.
Ich möchte das ganze so Professionell wie möglich gestallten und so bin ich auf die Bibliothek GregorianCalendar gestoßen.
Nun habe ich mich darüber Informiert und denke ich habe herrausgefunden das es nur ein System ist um Berechnungen durchzuführen wieviel Zeit von einem zu einem anderen Tag vergangen ist und um das Datum auszugeben.
Worauf ich hinaus will ist die frage: Kann man einen Kalender mit dieser Bibliothek realisieren ?

Meine Idee war es für jeden Tag ein Array zu machen der Länge 1440 worin ich dann Termine stecken kann in form von Klassen. Diese Arrays wollte ich dann in Arrays packen der Länge 365 und dann eine Klasse die das ganze erzeugt und gleich per Algorythmus einträgt welche Wochentage das sind ect.

Das ganze kann ich mir sparen wenn ich den GregorianCalendar falsch verstanden hab und der einen schon fertigen Kalender on Board hat.

Ihr seht ich bräuchte hier und da ein Paar Tipps wie man Anfängt.

Java Grundkenntnisse sind vorhanden wenn auch im Detail noch etwas unsicher =D ...
 

Mino1337

Mitglied
Da ich finde das meine Fragestellung etwas merkwürdig Formuliert war werde ich sie nocheinmal spezifizieren =) ...

Ich habe mich nun einmal Praktisch mit dem GregorianCalendar befasst und folgenden Code geschrieben:

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


public class Kalendertest {

	public static void main(String[] args) {
		
		GregorianCalendar cal = new GregorianCalendar();
		
		for(int i=0; i<=365; i++){
			
			cal.set(Calendar.DAY_OF_YEAR, i);
			int tag=cal.get(Calendar.DAY_OF_WEEK);
			String WT;
			
			if(tag==0){
				WT="Montag";
			}else if(tag==1){
				WT="Dienstag";
			}else if(tag==2){
				WT="Mittwoch";
			}else if(tag==3){
				WT="Donnerstag";
			}else if(tag==4){
				WT="Freitag";
			}else if(tag==5){
				WT="Samstag";
			}else{
				WT="Sonntag";
			}
			
			System.out.println("Datum:"+Calendar.DAY_OF_MONTH+"."+Calendar.MONTH+1+"."+Calendar.YEAR+" Wochentag: "+WT);
			
		}
		}

	
}

Wenn der Code das tun würde was er soll hätte sich meine erste frage erübrigt. Der Code Erzeugt ein Calendar Objekt welches die Daten vom Aktuellen Datum beinhalten sollte also auch das aktuelle Jahr.
Die Schleife soll nun den Calendar zuerst auf den ersten Tag im Jahr setzen und dann das Datum des ersten Tages im Jahr ausgeben und den Wochentag und das für eben alle Tage.

es sollte so aussehen:

Datum: 1.1.2015 Wochentag: Donnerstag
Datum: 2.1.2015 Wochentag: Freitag
Datum: 3.1.2015 Wochentag: Samstag
Datum: 4.1.2015 Wochentag: Sonntag
Datum: 5.1.2015 Wochentag: Montag
...

es sieht aber so aus:

Datum:5.21.1 : Freitag
Datum:5.21.1 Wochentag: Freitag
Datum:5.21.1 Wochentag: Samstag
Datum:5.21.1 Wochentag: Sonntag
Datum:5.21.1 Wochentag: Sonntag
Datum:5.21.1 Wochentag: Dienstag

Also entweder habe ich den gebrauch des Calendars nicht verstanden oder ich habe einen fehler irgendwo den ich nicht versteh.

Könnte mich jemand aufklären =) ?
 

X5-599

Top Contributor
Im Grunde scheint es schon so zu funktionieren. Ein paar Kleinigkeiten hast du übersehen. Mit diesem Code müsste es funktionieren:

Java:
GregorianCalendar cal = new GregorianCalendar();

for(int i = 0; i < 365; i++)
{
    cal.set(Calendar.DAY_OF_YEAR, i+1);
    int tag=cal.get(Calendar.DAY_OF_WEEK);
    String WT;
    
    if(tag == 2)
    {
        WT = "Montag";
    }
    else if(tag == 3)
    {
        WT = "Dienstag";
    }
    else if(tag == 4)
    {
        WT = "Mittwoch";
    }
    else if(tag == 5)
    {
        WT = "Donnerstag";
    }
    else if(tag == 6)
    {
        WT = "Freitag";
    }
    else if(tag == 7)
    {
        WT = "Samstag";
    }
    else
    {
        WT = "Sonntag";
    }
    
    System.out.println("Datum:"+cal.get(Calendar.DAY_OF_MONTH)+"."+(cal.get(Calendar.MONTH)+1)+"."+cal.get(Calendar.YEAR)+" Wochentag: "+WT);
}

Der erste Tag des Jahres ist eine "1"; keine "0".
Die Wochentagszuordnung beginnt nicht mit "0". Sonntag ist "1", Montag ist "2" usw.
In deiner System.out.println hast du für Calendar.DAY_OF_MONTH, Calendar.MONTH und Calendar.YEAR jeweils das "cal.get(xxx)" vergessen.

Das sind die Sachen, die mir aufgefallen sind. Falls jemand Fehler findet; bitte korrigieren.
 

Machareder

Bekanntes Mitglied
ich hab jetzt nur mal drüber gekuckt, sind in dem fall switch case abfrage nicht viel schlauer und vorallem besser lesbar? Und wenn dort statt einer zahl irgendetwas anderes als tag gesetzt wird, wird sonntag ausgegeben.
 

VfL_Freak

Top Contributor
Moin,

schlauer wohl nicht ... das ist äquivalent !
Über besser lesbar könnte man jetzt mMn lustig streiten ;-)

Was sollte denn Deiner Meinung dort anderes kommen ???:L

Gruß Klaus
 

Mino1337

Mitglied
Klasse Funktioniert ... hätte ich nicht Gedacht =D ... Ich meine das ich das so Schnell Kapier wie das Funzen soll, wow mein Englisch ist wohl doch besser als ich dachte XD ...


Dankeschön =)
 

Wurstkopp

Bekanntes Mitglied
Übrigens kannst du mit Locale deinen Kalendar auch in der Sprache dynamisch machen und brauchst keine Strings definieren. z.B.:

Java:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;

public class Kalendertest {
	private static final SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy EEEE", Locale.GERMAN);

	public static void main(String[] args) {

		GregorianCalendar cal = new GregorianCalendar();
		for (int i = 1; i <= 365; i++) {
			cal.set(Calendar.DAY_OF_YEAR, i);
			System.out.println(sdf.format(cal.getTime()));
		}
	}
}

Oder so nur um die Tage zu erhalten:

Java:
private static final String[] dayNames = new DateFormatSymbols(new Locale("de")).getWeekdays();
 
Zuletzt bearbeitet:

Tom299

Bekanntes Mitglied
Java:
		DateTimeFormatter dtf = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
		LocalDate date = LocalDate.of(2015, Month.JANUARY, 1);
		int daysOfYear = date.lengthOfYear();
		for (int i=0;i<daysOfYear;i++) {
			System.out.println("Datum: " + date.format(dtf) + " Wochentag: " + date.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.GERMAN));
			date = date.plusDays(1);
		}
 

Ähnliche Java Themen

Neue Themen


Oben