C# Kalenderblatt Problem?

... komplette Frage anzeigen

1 Antwort

In deinem geposteten Programmcode kann ich keinen Fehler entdecken. Bei mir funktioniert er, wenn ich die Variablendeklarationen hinzufüge.

Wie liest du denn das Datum ein? Vermutlich liegt da ein Fehler vor.

Kommentar von CrystalixXx
28.04.2016, 18:23

Ich habe mal eben selbst so ein Programm geschrieben. Du kannst es ja mit deinem Code vergleichen. Vielleicht findest du den Fehler. Es könnte an der Berechnung des Wochentags für den ersten Tag im Monat liegen (das hatte ich anfangs auch falsch). : )

using System.Globalization;

public static void ShowCalendar()
{
// Variablen deklarieren
string s = string.Empty;
DateTime d = DateTime.Now;
DateTimeFormatInfo calendarInfo = new DateTimeFormatInfo();

Console.WriteLine("Bitte ein Datum eingeben:");
s = Console.ReadLine();

// Eingabe parsen und bei Fehlschlag Methode beenden
if (!DateTime.TryParse(s, out d))
{
Console.WriteLine("Der eingegebene Wert ist kein gültiges Datum.");
return;
}

// Ersten Tag der Woche auf Montag festlegen (dadurch stellt "Montag" den Wert 1
// dar und Sonntag den Wert 7) und den Wochentag des ersten Tags im Monat ermitteln
calendarInfo.FirstDayOfWeek = DayOfWeek.Monday;
int weekDay = Convert.ToInt32(calendarInfo.Calendar.GetDayOfWeek(d.AddDays(1 - d.Day)));

// Erzeugt einen Einschub, damit der erste Tag an entsprechender Position steht
Console.Write(new string(' ', (weekDay - 1) * 4));

// Schleife von 1 bis Monatsende
for (int i = 1; i <= System.DateTime.DaysInMonth(d.Year, d.Month); i++)
{
// Tag ausgeben und auf 4 Zeichen links auffüllen
Console.ForegroundColor = (i == d.Day) ? ConsoleColor.Red : ConsoleColor.White;
Console.Write(i.ToString().PadLeft(4));

// Zeilenumbruch, wenn Wochenende erreicht
if ((i + weekDay - 1) % 7 == 0)
Console.Write(System.Environment.NewLine);
}
}
0

Was möchtest Du wissen?