Sprache: C#
Nach Übergabe der Kalenderwoche wird in Abhängigkeit von der eingestellten CurrentCulture
public static DateTime StartDay(int KW)
{
try
{
int _tempweek = 0;
if (0 < KW && KW < 54)
{
/// summary
/// auslesen der eingestellten Systemsprache
/// summary
CultureInfo CUI = CultureInfo.CurrentCulture;// CreateSpecificCulture("en-US");
/// summary
/// festlegen von FirstDate auf den 01.01. des aktuellen Jahres
/// summary
DateTime FirstDate = new DateTime(CUI.DateTimeFormat.Calendar.GetYear(DateTime.Now), 1, 1);
/// summary
/// solange bis _tempweek = der eingestellten Kalenderwoche ist
/// summary
while (_tempweek < KW)
{
FirstDate = FirstDate.AddDays(1);
_tempweek = CUI.Calendar.GetWeekOfYear(FirstDate,
CUI.DateTimeFormat.CalendarWeekRule,
CUI.DateTimeFormat.FirstDayOfWeek);
}
DayOfWeek FirstDay = CUI.Calendar.GetDayOfWeek(FirstDate);
if (FirstDate.Year == DateTime.Now.Year)
{
return FirstDate;
}
else
{
throw new ArgumentException();
}
}
else
{
throw new ArgumentOutOfRangeException();
}
}
catch (ArgumentOutOfRangeException e)
{
throw new ArgumentOutOfRangeException(String.Format("Eingabe ausserhalb des Bereiches : 1 - 53", e.Message));
}
catch (ArgumentException ex)
{
throw new ArgumentException(String.Format("In diesem Jahr gibt es diese Kalenderwoche nicht",ex.Message));
}
}
public static DateTime StartDay(int KW)
{
try
{
int _tempweek = 0;
if (0 < KW && KW < 54)
{
/// summary
/// auslesen der eingestellten Systemsprache
/// summary
CultureInfo CUI = CultureInfo.CurrentCulture;// CreateSpecificCulture("en-US");
/// summary
/// festlegen von FirstDate auf den 01.01. des aktuellen Jahres
/// summary
DateTime FirstDate = new DateTime(CUI.DateTimeFormat.Calendar.GetYear(DateTime.Now), 1, 1);
/// summary
/// solange bis _tempweek = der eingestellten Kalenderwoche ist
/// summary
while (_tempweek < KW)
{
FirstDate = FirstDate.AddDays(1);
_tempweek = CUI.Calendar.GetWeekOfYear(FirstDate,
CUI.DateTimeFormat.CalendarWeekRule,
CUI.DateTimeFormat.FirstDayOfWeek);
}
DayOfWeek FirstDay = CUI.Calendar.GetDayOfWeek(FirstDate);
if (FirstDate.Year == DateTime.Now.Year)
{
return FirstDate;
}
else
{
throw new ArgumentException();
}
}
else
{
throw new ArgumentOutOfRangeException();
}
}
catch (ArgumentOutOfRangeException e)
{
throw new ArgumentOutOfRangeException(String.Format("Eingabe ausserhalb des Bereiches : 1 - 53", e.Message));
}
catch (ArgumentException ex)
{
throw new ArgumentException(String.Format("In diesem Jahr gibt es diese Kalenderwoche nicht",ex.Message));
}
}
Alte URL:
/snippet/ermitteln-des-starttages-einer-kw/69
Die Konstruktion, die Exceptions ohne Parameter zu erzeugen, sie wieder zu fangen und zu verwerfen und dann neue Exceptions mit Parameter zu erzeugen, leuchtet mir nicht ein und wäre auch echt falsch, wenn von einer der benutzen Methoden eine ArgumentException oder ArgumentOutOfRangeException geworfen würde. Stattdessen sollten die Exceptions gleich richtig erzeugt und geworfen werden.