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:
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.