public EinmaligerTermin(XmlNode derKnoten) : base(derKnoten) { int jahr, monat, tag; try { jahr = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./jahr").FirstChild.Value, "Jahr"); monat = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./monat").FirstChild.Value, "Monat"); tag = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./tag").FirstChild.Value, "Tag"); } catch (KeineZahlException) { throw new EintragParseException("Xml could not be parsed correctly"); } //Termine an 29.2. in nicht Schaltenjahren sollten nicht auf den 28. korrigiert werden, sondern als nicht valide gelten //tag = HilfsKonstrukte.Korrigiere29zu28inNichtSchaltjahrFebruar(jahr, monat, tag); try { HilfsKonstrukte.PruefeObValidesDatum(jahr, monat, tag); } catch (FalscherBereichException) { throw new EintragParseException("Xml could not be parsed correctly"); } _datum = new DateTime(jahr, monat, tag); }
public int StartWochenTag() { //15.10.1582 (Korrekturtag) war Fr //-> 1.1.1583 Sa=5 int wochenTag = 5; for (int i = HilfsKonstrukte.MIN_JAHR; i < _jahr; ++i) { wochenTag += HilfsKonstrukte.TAGE_IM_JAHR + (HilfsKonstrukte.IstSchaltjahr(i) ? 1 : 0); wochenTag %= 7; } return(wochenTag); }
public override void gibAus() { oeffneStream(); //Textdatei erzeigen // html(_modus); //HTML Datei anlegen int monat, tag; int wochentagDesErstenImMonat = 0; //Mo = 0, ... gibZeileAus("Kalender fuer das Jahr " + _jahr.Jahreszahl()); gibZeileAus(); string wochentage = String.Join(" ", HilfsKonstrukte.wochenTagNamenKurz); wochentagDesErstenImMonat = _jahr.StartWochenTag(); for (monat = 0; monat < 12; monat++) //Schleife für die Erstellung der Monate: 0=Jan bis 11=Dez { gibZeileAus(" " + HilfsKonstrukte.monatsNamen[monat]); gibZeileAus(wochentage); if (monat > 0) { wochentagDesErstenImMonat += HilfsKonstrukte.TageImMonat(monat, _jahr.Jahreszahl()) % 7; wochentagDesErstenImMonat %= 7; } //Die Woche beginnt immer Montags, nur der 1. eines Monats //kann auf verschiedene Wochentage fallen. int ausgabePosition = wochentagDesErstenImMonat; string zeile = "".PadLeft(ausgabePosition * 3); for (tag = 1; tag <= HilfsKonstrukte.TageImMonat(monat + 1, _jahr.Jahreszahl()); tag++) //solange Zähler kleiner gleich Wert aus Array Tage { zeile += tag.ToString().PadRight(3); ausgabePosition++; //wenn hinterste Position erreicht Zeihlenumbruch einfügen und Bildschirm-Positionszähler zurücksetzen if (ausgabePosition > 6) { gibZeileAus(zeile); ausgabePosition = 0; zeile = ""; } } if (zeile.Length > 0) //wenn mehr als 0 Zeichen vorhanden sind ganze Zeile ausgeben { gibZeileAus(zeile); } //freie Zeilen zwischen den Monaten auf dem Bildschirm gibZeileAus(); } //ende for Schleife Monat schliesseStream(); }
public Geburtstag(XmlNode derKnoten) : base(derKnoten) { try { if (derKnoten.SelectSingleNode("./jahr") != null) { _geburtsjahr = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./jahr").FirstChild.Value, "Jahr"); } } catch (KeineZahlException) { throw new EintragParseException("Xml could not be parsed correctly"); } }
public KalenderJahr(int dasJahr) { _jahr = dasJahr; _monate = new List <Monat>(); _wochen = new List <Woche>(); _tage = new List <Tag>(); int tageImJahr = HilfsKonstrukte.TAGE_IM_JAHR; if (IstSchaltjahr()) { ++tageImJahr; } int wochenTag = StartWochenTag(); int wochenNummer = StartWochenNummer(); int monat = 0; int tagImMonat = 0; Woche woche = new Woche(wochenNummer); for (int i = 0; i < tageImJahr; ++i) { if (tagImMonat == 0) { _monate.Add(new Monat(monat)); } if (wochenTag == 0 && i != 0) { wochenNummer++; woche = new Woche(wochenNummer); _wochen.Add(woche); } Tag meinTag = new Tag(tagImMonat + 1, wochenTag, i + 1); meinTag.SetzeWoche(ref woche); _tage.Add(meinTag); _monate[monat].FuegeTagAn(ref meinTag); wochenTag = (++wochenTag) % HilfsKonstrukte.TAGE_PRO_WOCHE; tagImMonat++; if (tagImMonat == HilfsKonstrukte.TageImMonat(monat + 1, _jahr)) { monat++; tagImMonat = 0; } } }
public RelativesEreignisNterWochentagImMonat(XmlNode derKnoten) : base(derKnoten) { try { _n = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./n").FirstChild.Value, "n"); HilfsKonstrukte.PruefeBereich(_n, 1, 5); } catch (KeineZahlException) { throw new EintragParseException("Xml could not be parsed correctly"); } catch (FalscherBereichException) { throw new EintragParseException("Xml could not be parsed correctly"); } }
public RelativerEintrag(XmlNode derKnoten) : base(derKnoten) { try { _monat = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./monat").FirstChild.Value, "Monat"); _wochentag = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./wochentag").FirstChild.Value, "Wochentag"); HilfsKonstrukte.PruefeBereich(_monat, 1, 12); HilfsKonstrukte.PruefeBereich(_wochentag, 0, HilfsKonstrukte.TAGE_PRO_WOCHE - 1); } catch (KeineZahlException) { throw new EintragParseException("Xml could not be parsed correctly"); } catch (FalscherBereichException) { throw new EintragParseException("Xml could not be parsed correctly"); } }
public JaehrlichesEreignisAnFestemTag(XmlNode derKnoten) : base(derKnoten) { try { _monat = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./monat").FirstChild.Value, "Monat"); _tag = HilfsKonstrukte.KonvertiereZuInt( derKnoten.SelectSingleNode("./tag").FirstChild.Value, "Tag"); int dummySchaltjahr = 2012; HilfsKonstrukte.PruefeObValidesDatum(dummySchaltjahr, _monat, _tag); } catch (KeineZahlException) { throw new EintragParseException("Xml could not be parsed correctly"); } catch (FalscherBereichException) { throw new EintragParseException("Xml could not be parsed correctly"); } }
public override void gibAus() { oeffneStream(); int monat, tag; int wochentagDesErstenImMonat = 0; //Mo = 0, ... gibZeileAus("Kalender fuer das Jahr " + _jahr.Jahreszahl()); gibZeileAus(); string wochentage = String.Join(" ", HilfsKonstrukte.wochenTagNamenKurz); wochentagDesErstenImMonat = _jahr.StartWochenTag(); for (monat = 0; monat < 12; monat++) //Schleife für die Erstellung der Monate: 0=Jan bis 11=Dez { preparedStrings[monat] = new List <string>(); preparedStrings[monat].Add(" " + HilfsKonstrukte.monatsNamen[monat]); preparedStrings[monat].Add(wochentage); if (monat > 0) { wochentagDesErstenImMonat += HilfsKonstrukte.TageImMonat(monat, _jahr.Jahreszahl()) % 7; wochentagDesErstenImMonat %= 7; } //Die Woche beginnt immer Montags, nur der 1. eines Monats //kann auf verschiedene Wochentage fallen. int ausgabePosition = wochentagDesErstenImMonat; string zeile = "".PadLeft(ausgabePosition * 3); for (tag = 1; tag <= HilfsKonstrukte.TageImMonat(monat + 1, _jahr.Jahreszahl()); tag++) //solange Zähler kleiner gleich Wert aus Array Tage { zeile += tag.ToString().PadRight(3); ausgabePosition++; //wenn hinterste Position erreicht Zeihlenumbruch einfügen und Bildschirm-Positionszähler zurücksetzen if (ausgabePosition > 6) { preparedStrings[monat].Add(zeile); ausgabePosition = 0; zeile = ""; } } if (zeile.Length > 0) //wenn mehr als 0 Zeichen vorhanden sind ganze Zeile ausgeben { preparedStrings[monat].Add(zeile); } //freie Zeilen zwischen den Monaten auf dem Bildschirm while (preparedStrings[monat].Count < 9) { preparedStrings[monat].Add(""); } } //ende for Schleife Monat for (monat = 0; monat < 6; monat++) { for (int i = 0, l = preparedStrings[monat].Count; i < l; ++i) { gibZeileAus(preparedStrings[monat][i].PadRight(SPALTEN_BREITE) + preparedStrings[monat + 6][i]); } } schliesseStream(); }
public bool IstSchaltjahr() { return(HilfsKonstrukte.IstSchaltjahr(_jahr)); }
public override void TrageEinIn(KalenderJahr dasJahr) { int korrigierterTag = HilfsKonstrukte.Korrigiere29zu28inNichtSchaltjahrFebruar(dasJahr.Jahreszahl(), _monat, _tag); dasJahr.GibMonate()[_monat - 1].GibTage()[korrigierterTag - 1].TrageEin(this, GibEintragText(dasJahr)); }