Autor |
Beitrag |
okrim
Beiträge: 82
Win 7
C# (VS 2010 Express)
|
Verfasst: Mo 03.03.14 18:57
Ich beschäftige mich ja damit, grob übeschlagen beschäftige ich mich jetzt schon 30 Stunden genau damit, ich google und mach, nur fehlt mir hier der Ansatz aber irgendwie wird es schon klappen, zur not gebe ich halt den Urlaub wieder jeden Tag einzeln ein und mach mit den sachen weiter die ich alleine hinbekomme.
Trozdem Danke an alle!
Gruß Mirko
|
|
okrim
Beiträge: 82
Win 7
C# (VS 2010 Express)
|
Verfasst: Di 04.03.14 22:36
Hallo Th69,
wollte mal fragen ob das mit dem DateTime.DayOfWeek so in der Art gemeint hast?
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| public Dictionary<DateTime, DayType> GetListOfDayTypes(DateTime dtBeginDate, DateTime dtEndDate) { Dictionary<DateTime, DayType> result = new Dictionary<DateTime, DayType>(); while (dtBeginDate <= dtEndDate) { if (dtBeginDate.DayOfWeek == DayOfWeek.Saturday || dtBeginDate.DayOfWeek == DayOfWeek.Sunday) result.Add(dtBeginDate, DayType.Weekend); else if (dtBeginDate.IsFeiertag()) result.Add(dtBeginDate, DayType.Holiday); else result.Add(dtBeginDate, DayType.WorkDay); dtBeginDate = dtBeginDate.AddDays(1); } return result; } |
nur mit der Methode IsFeiertag(DateTime)
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public bool IsFeiertag(DateTime dtDate) { foreach (Feiertage feiertag in this._feiertagsMatrix[this._bundesLand]) { if (dtDate == GetFeiertagDatum(feiertag, dtDate.Year)) return( true ); } return (false); } |
komme ich nicht ganz klar, wie kann ich da IsFeiertag ersetzen?
Wäre nett wenn ihr mir nochmal einen Tipp geben könntet.
Gruß Mirko
|
|
Ralf Jansen
Beiträge: 4705
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mi 05.03.14 00:35
Zitat: | komme ich nicht ganz klar, wie kann ich da IsFeiertag ersetzen? |
IsFeiertag ist die Methode eine Klasse der du deinen DateTime übergibst und einen Bool zurückbekommst.
Also die Klasse erzeugen die die Methode hat falls es noch keine Instanz dieser Klasse gibt und dann die Methode aufrufen.
Der Methode dann deinen dtBeginDate DateTime übergeben und den zurückgegeben Boolean prüfen.
|
|
Th69
Beiträge: 4782
Erhaltene Danke: 1055
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mi 05.03.14 11:17
Hallo okrim,
sofern deine beiden geposteten Methoden innerhalb einer Klasse (dem Kalenderrechner) sind, einfach
C#-Quelltext 1: 2:
| else if (IsFeiertag(dtBeginDate)) result.Add(dtBeginDate, DayType.Holiday); |
so aufrufen.
Und ja, dein Code bzgl. DayOfWeek ist richtig so (evtl. solltest du diese Abfrage in eine Methode - wie von Ralf vorgeschlagen - packen).
Ich nehme mal an, du bist mit der Syntax von Erweiterungsmethoden (extension methods) nicht so vertraut (so wie Ralf die Methoden formuliert hat, z.B. from.IsFeiertag()). Dies entspricht einfach dem Aufruf IsFeiertag(from).
Für diesen Beitrag haben gedankt: okrim
|
|
okrim
Beiträge: 82
Win 7
C# (VS 2010 Express)
|
Verfasst: Do 06.03.14 18:29
Hallo Ralf,
hallo Th69,
ich danke auch erst mal recht Herzlich für eure Hilfe.
@ Th69
warum oder aus welchem Grund wäre es besser wenn ich die Abfrage vom Wochenende in eine Methode packe?
@ alle
dann habe ich das nächst Problem und zwar habe ich jetzt ja in der Klasse Kalenderrechner folgenden Code stehen
C#-Quelltext 1:
| public enum DayType { WorkDay, Weekend, Holiday } |
und
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| public Dictionary<DateTime, DayType> GetListOfDayTypes(DateTime dtBeginDate, DateTime dtEndDate) { Dictionary<DateTime, DayType> result = new Dictionary<DateTime, DayType>(); while (dtBeginDate <= dtEndDate) { if (dtBeginDate.DayOfWeek == DayOfWeek.Saturday || dtBeginDate.DayOfWeek == DayOfWeek.Sunday) result.Add(dtBeginDate, DayType.Weekend); else if (IsFeiertag(dtBeginDate)) result.Add(dtBeginDate, DayType.Holiday); else result.Add(dtBeginDate, DayType.WorkDay); dtBeginDate = dtBeginDate.AddDays(1); } return result; } |
und wie Ralf gesagt hat habe ich in Form1, da wo ich das ganze dann auch in meine Datenbank schreiben will den restlichen Code von Ralf
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| foreach (var tuple in GetListOfDayTypes(dtBeginDate, dtEndDate)) { switch (tuple.Value) { case DayType.WorkDay: break; case DayType.Weekend: break; case DayType.Holiday: break; default: break; } } |
nur erkennt das Form1 "GetListOfDayTypes" nicht da bekomme ich den Fehler "Der Name "GetListOfDayTypes" ist im aktuellen Kontext nicht vorhanden." muss ich dies noch von Kalenderrechner an Form1 übergeben?
Und wie ist das mit dem Enum sind da jetzt die Daten (z.B. Wochenende inkl. Datum) gespeichert?
Dank im voraus!!!
Gruß Mirko
|
|
Ralf Jansen
Beiträge: 4705
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Do 06.03.14 18:38
Ohoh.
Das nützt glaube ich rein gar nix wenn wir dir jetzt sagen was du machen musst. Du tust es dann einfach verstehst nicht warum und fragst dann was als nächstes zu tun ist.
Wir haben dir hier ein paar Einzelteile hingeworfen damit du dich damit beschäftigst und darüber verstehst was notwendig ist.
Im Moment scheint dir jegliches Verständnis für die Struktur einer Anwendung zu fehlen. Was sind Klassen, was sind Methoden, wie ruft man die auf etc.
Am besten solltest du nochmal die Bücher rauskrammen und ein paar Grundlagen objektorientierter Programmierung nachlesen sonst wir das hier nicht mehr als ~Fernsteuerung~.
Für diesen Beitrag haben gedankt: Christian S.
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 06.03.14 19:51
Ralf hat es gut auf den Punkt gebracht. Daher schließe ich an dieser Stelle das Thema auch, das hat keinen Sinn.
Und außerdem hat das Thema schon lange nichts mehr mit dem zu tun, was im Titel steht bzw. in welcher Sparte es ist.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.
Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.
|
|