Entwickler-Ecke
WinForms - Problem bei Feiertagsberechnung
master147 - So 04.03.12 13:06
Titel: Problem bei Feiertagsberechnung
Hallo,
ich möchte in c# ein Problem zur Feiertagsberechnung schreiben. Dazu habe ich eine Klasse Feiertag zu Übungszwecken aus dem Internet genommen. Jetzt kommt bei Aufruf aber der Fehler, dass ein Objektverweis erforderlich ist. Leider weiß ich nicht wo der Fehler sitzt.
Hier die Klasse:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Feiertagsberechnung1 { class Feitertag { public string GetFeiertag(DateTime myDatum) { string feierTag = "";
String testDate = (myDatum.Day.ToString() + "/" + myDatum.Month.ToString());
switch (testDate) { case "1/1": feierTag = "Neujahr"; break; case "1/5": feierTag = "Tag der Arbeit"; break; case "15/8": feierTag = "Mariae Himmelfahrt"; break; case "3/10": feierTag = "Tag der dt. Einheit"; break; case "1/11": feierTag = "Allerheiligen"; break; case "25/12": feierTag = "1. Weihnachtstag"; break; case "26/12": feierTag = "2. Weihnachtstag"; break; default: feierTag = GetMovFeierTag(myDatum); break; }
return feierTag; }
private String GetMovFeierTag(DateTime myDatum) { int Jahr = myDatum.Year; DateTime Ostersonntag = GetOstersonntag(Jahr);
if (myDatum == Ostersonntag.AddDays(0)) { return "OsterSonntag"; } if (myDatum == Ostersonntag.AddDays(-2)) { return "Karfreitag"; } if (myDatum == Ostersonntag.AddDays(1)) { return "Ostermontag"; } if (myDatum == Ostersonntag.AddDays(39)) { return "Christi Himmelfahrt"; } if (myDatum == Ostersonntag.AddDays(49)) { return "Pfingstsonntag"; } if (myDatum == Ostersonntag.AddDays(50)) { return "Pfingstmontag"; } if (myDatum == Ostersonntag.AddDays(60)) { return "Fronleichnam"; }
return ""; }
private DateTime GetOstersonntag(int jahr) { DateTime OsterSonntag;
int c; int i; int j; int k; int l; int n; int OsterTag; int OsterMonat;
c = jahr / 100; n = jahr - 19 * ((int)(jahr / 19)); k = (c - 17) / 25; i = c - c / 4 - ((int)(c - k) / 3) + 19 * n + 15; i = i - 30 * ((int)(i / 30)); i = i - (i / 28) * ((int)(1 - (i / 28)) * ((int)(29 / (i + 1))) * ((int)(21 - n) / 11)); j = jahr + ((int)jahr / 4) + i + 2 - c + ((int)c / 4); j = j - 7 * ((int)(j / 7)); l = i - j;
OsterMonat = 3 + ((int)(l + 40) / 44); OsterTag = l + 28 - 31 * ((int)OsterMonat / 4);
return Convert.ToDateTime(OsterTag.ToString() + "." + OsterMonat + "." + jahr); } } } |
und hier mein Aufruf wenn ich auf den Button klicke:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace Feiertagsberechnung1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) {
DateTime myDate = new DateTime(2003, 12, 6); textbox1.text = Feiertagsberechnung1.Feitertag.GetFeiertag(myDate); } } } |
Ich hoffe, dass ihr mir helfen könnt.
Kha - So 04.03.12 14:59
:welcome: in der EE!
Da hat sich der Autor der Klasse beim Klassendesign wohl nicht viel Mühe gegeben - markiere alle Methoden darin als static, dann kannst du sie genau wie gewünscht aufrufen. Und lies dann noch einmal nach, warum es so funktioniert ;) .
Th69 - So 04.03.12 19:15
| master147 hat folgendes geschrieben: |
|
;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!