Sprache: C#
Berechnet das Quartal eines Datums.
Beispiel zur Verwendung:
int quartal = DateTime.Today.Quarter();
public static int Quarter(this DateTime date)
{
return (date.Month + 2) / 3;
}
public static int Quarter(this DateTime date)
{
return (date.Month + 2) / 3;
}
Alte URL:
/snippet/quartal-eines-datums-ermitteln-erweiterungsmethode/14110
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
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:
[code]
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
[/code]
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
.NET hält sich hier an die Standards der Informatik. Eine Integer Division erzeugt stets einen Integer…