Feedback

C# - Ermitteln des Starttages einer KW

Veröffentlicht von am 28.05.2006
(2 Bewertungen)
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));
    }
} 
Abgelegt unter Kalenderwoche, Woche, Kalender, Starttag.

1 Kommentare zum Snippet

herbivore schrieb am 11.12.2006:
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.
 

Logge dich ein, um hier zu kommentieren!