Blue Orange Green Pink Purple

Posts Tagged ‘System’

You can use the search form below to go through the content and find a specific post or page:

Feb 18

HowTo: Erzeugen einer Liste von aufeinanderfolgenden Jahreszahlten?

Heute mal ein kurzer Eintrag, der die Frage “Wie kann ich eine Liste von aufeinanderfolgenden Jahreszahlen einfach erzeugen?” beantworten soll. Out-of-the-box wird das Ganze nicht unterstützt, deshalb schreiben wir uns einfach eine kleine Hilfsmethode, die wir ja in eine Bibliothek oder dergleichen auslagern können:

public static List<DateTime> FindYearsBetween(DateTime start, DateTime end, bool includeStart, bool includeEnd)
{
   if (start == null) throw new ArgumentNullException("Start-DateTime is null.");
   if (end == null) throw new ArgumentNullException("End-DateTime is null.");

   // Zuerst überprüfen wir, ob das Start-Datum gültig ist ...
   if (start == System.DateTime.MaxValue || start == System.DateTime.MinValue)
      throw new ArgumentOutOfRangeException("Start-DateTime cannot be MaxValue or MinValue.");

   // ... und das gleiche für das End-Datum.
   if (end == System.DateTime.MaxValue || end == System.DateTime.MinValue)
      throw new ArgumentOutOfRangeException("End-DateTime cannot be MaxValue or MinValue.");

   // Das Start-Datum muss vor dem End-Datum liegen.
   if (start.CompareTo(end) >= 0)
      throw new ArgumentOutOfRangeException("End-DateTime must be later than Start-DateTime.");

    // Soll das Anfangsjahr nicht in die Ergebnismenge inkludiert werden, dann zählen
    // wir zu dem Anfangsjahr einfach ein Jahr dazu, somit beginnen wir beim Folgejahr.
    if (!includeStart) start = start.AddYears(1);

    // Soll das Endjahr nicht in die Ergebnismenge inkludiert werden, dann holen wir
    // uns das Vorgängerjahr. Somit beenden wir die Suche schon beim Vorgängerjahr.
    if (!includeEnd) end = end.AddYears(-1);

    List<System.DateTime> range = new List<System.DateTime>();

    // Jetzt fürgen wir solange neue Datumswerte hinzu, bis das
    // Anfangsjahr gleich dem Endjahr ist.
    while (start <= end)
    {
        range.Add(start);
        start = start.AddYears(1);
     }

     return range;
}

Der Code inkl. Kommentare ist großteils selbsterklärend. Wichtig ist, die übergebenen Datumswerte auf Gültigkeit zu prüfen – zB muss das Enddatum nach dem Startdatum liegen. Die beiden boolschen Parameter geben an, ob das Startdatum (also das Jahr) in die Ergebnismenge inkludiert werden soll — das gleiche gilt für das Enddatum.

Demoprojekt inklusive Unit.Tests (nunit) gibts wie immer als Download: http://downloads.juergenoberngruber.at/blog/DateTimeList.zip

In diesem Sinne.

  • Recent Posts
    • HowTo: Eigene Regeln für Microsoft StyleCop erstellen
    • HowTo: Microsoft StyleCop Integration mit Visual Studio und MSBuild
    • HowTo: Eigene Templates für Visual Studio 2008 erstellen, Teil 2
    • HowTo: Eigene Templates für Visual Studio 2008 erstellen, Teil 1
    • Performance des Cassini Webservers in Kombination mit Firefox
  • Archives
    • June 2010 (2)
    • May 2010 (3)
    • March 2010 (3)
    • February 2010 (4)
    • January 2010 (3)
    • December 2009 (1)
    • November 2009 (9)
  • Tags
    .net AOP ASP.NET ASP.NET MVC blend Bootmanager C# ci Codequality Configuration Continuous Integration css Cursor DateTime DDD Deployment dynamisch emit Exrpession Extensibility Fluent HowTo Microsoft MVVM Pattern PostSharp Reflection Repository ruby silverlight Software Design StyleCop System teamcity Templates VHD Virtual Images Visual Studio Vorlagen web Windows 7 Windows Mobile WinForms WPF XAML
  • About

    Jürgen Oberngruber is a project manager and software architect living in Wels, Austria and currently working at ecomplexx Austria, Wels. During his study at the University of Applied Sciences in Hagenberg, Austria he gained a deep knowledge in the field of software engineering using a lot of different programming languages. Since a few years he's focusing on the Microsofts .NET platform including all relevant technologies. One of his passion is to explore, to test and to evaluate new technologies and programming languages (mostly in the field of Microsofts .NET platform). Checkout more information on www.juergenoberngruber.at

  • Meta
    • Log in
    • Entries RSS
    • Comments RSS
    • WordPress.org
  • Archives
    • June 2010
    • May 2010
    • March 2010
    • February 2010
    • January 2010
    • December 2009
    • November 2009
  • Search






  • Home

© Copyright Jürgen Oberngruber's Blog. All rights reserved.
Designed by FTL WordPress Themes brought to you by DT Web Template

Back to Top