Feedback

C# - Quartal eines Datums ermitteln (Erweiterungsmethode)

Veröffentlicht von am 27.01.2016
(2 Bewertungen)
Berechnet das Quartal eines Datums.

Beispiel zur Verwendung:

int quartal = DateTime.Today.Quarter();
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

public static int Quarter(this DateTime date)
{
    return (date.Month + 2) / 3;
}
Abgelegt unter Quartal, Datum.

4 Kommentare zum Snippet

evilbaschdi schrieb am 28.01.2016:
Interessant gelöst, allerdnigs kommt im März, Juni und September jeweils x,6~ raus, worauf eigentlich aufgerundet werden müsste und somit das falsche Quartal zurück geliefert wird.
rechnet man hingegen date.Month +1 statt +2 und teilt das durch 3, stimmt das Ergebnis nach Rundung auch ohne Fummelei bzgl. 1,6~ = 1
Patrick Semmler schrieb am 28.01.2016:
Hallo evilbaschdi,

hier wird nichts gerundet.
Hast Du den Code mal getestet?
Bei dem Code wird int durch int geteilt, wodurch im Ergebnis die Nachkommastellen abgeschnitten werden.

Ein Test, der alle Monate in einer Schleife durchgeht, bringt das korrekte Ergebnis:

Monat Januar: 1. Quartal
Monat Februar: 1. Quartal
Monat März: 1. Quartal
Monat April: 2. Quartal
Monat Mai: 2. Quartal
Monat Juni: 2. Quartal
Monat Juli: 3. Quartal
Monat August: 3. Quartal
Monat September: 3. Quartal
Monat Oktober: 4. Quartal
Monat November: 4. Quartal
Monat Dezember: 4. Quartal

evilbaschdi schrieb am 28.01.2016:
es ist doch egal, ob ich durch int teile oder durch decimal. wenn der rest ist doch entscheidend. mich würde wundern, dass .net hier nachkommastellen einfach so abschneidet. das wäre sogar fatal, wäre dass der fall.

edit:
gerade mal getestet: du hast tatsächlich recht. ich bin platt O.o
Koopakiller schrieb am 28.01.2016:
.NET hält sich hier an die Standards der Informatik. Eine Integer Division erzeugt stets einen Integer...
 

Logge dich ein, um hier zu kommentieren!