Erstellen Sie ein Array von Monaten zwischen zwei Daten

7

Ich habe das folgende Snippet, das ich verwende, um die einzelnen Daten zwischen zwei Daten zu erhalten:

%Vor%

Allerdings der folgende Abschnitt

%Vor%

hat keine Monate, um die Monate im Datumsbereich zurückzugeben.

Wenn ich zum Beispiel 1/1/2010 und 6/1/2010 zur Verfügung stelle, würde ich erwarten, 1/1/2010, 2/1/2010, 3/1/2010, 4/1/2010, 5 zurückzukehren / 1/2010 und 6/1/2010.

Irgendwelche Ideen?

    
Andy Evans 08.10.2010, 14:29
quelle

4 Antworten

25

Versuchen Sie Folgendes:

%Vor%

Dies umfasst sowohl den Startmonat als auch den Endmonat. Dies ermittelt, wie viele Monate es gibt, und erstellt dann ein neues DateTime basierend auf d0 's Jahr und Monat. Das heißt, die Monate sind wie yyyy-MM-01 . Wenn Sie möchten, dass die Uhrzeit und der Tag von d0 enthalten sind, können Sie new DateTime(d0.Year, d0.Month, 1).AddMonths(m) durch d0.AddMonths(m) ersetzen.

Ich sehe, dass Sie ein Array brauchen, in diesem Fall benutzen Sie einfach monthsBetween(..., ...).ToArray() oder setzen .ToArray() in die Methode.

    
Lasse Espeholt 08.10.2010, 14:39
quelle
3

Da ich zwischen zwei Terminen nur Jahr und Monat gebraucht habe, habe ich Lasse Espeholt etwas modifiziert. annehmen: d0 = 2012-11-03

d1 = 2013-02-05

Das Ergebnis wird etwa so aussehen:

2012-11

2012-12

2013-01

2013-02

%Vor%     
Niloofar 20.11.2013 09:47
quelle
1

Sie könnten Inkremente von Monaten mit:

aufzählen %Vor%

und rufen Sie dann ToArray() auf, wenn Sie ein Array möchten. Es ist ziemlich gut, Werte zu haben, die wahrscheinlich das sind, was man will; z.B. wenn du am 31. Januar startest, bekommst du als nächstes den 28. Februar (oder 29 th auf den Schaltjahren), dann am 31. März > st , dann Apr 30 th und so weiter.

    
Jon Hanna 08.10.2010 14:48
quelle
0

Ist das wonach Sie suchen? Die Anforderung ist sehr mehrdeutig.

%Vor%     
Christian Hayter 08.10.2010 14:36
quelle

Tags und Links