Créer la matrice de mois entre deux dates
J'ai le fragment de code suivant que j'utilise pour obtenir les différentes dates entre les deux dates:
DateTime[] output = Enumerable.Range(0, 1 + endDate.Subtract(startDate).Days)
.Select(offset => startDate.AddDays(offset))
.ToArray();
Cependant, la section suivante
endDate.Subtract(startDate).Days
n'ont pas .Mois pour retourner le mois, dans la plage de dates.
Par exemple, si je 1/1/2010 et 6/1/2010 je m'attends à revenir 1/1/2010, 2/1/2010, 3/1/2010, 4/1/2010, 5/1/2010 et 6/1/2010.
Des idées?
Comment un
double possible de Différence en mois
Months
bien travailler? Comment serait-il savoir qui du Mois # de jours à utiliser? Après la soustraction, vous êtes juste à gauche avec une plage de Temps qui est de la date-neutre et donc ne sait rien sur les mois à utiliser.double possible de Différence en mois
.Days
retourne le nombre de jours dans l'intervalle, pas le nombre de jours réels. Comment définissez-vous le fait que "un mois est entre 2 dates"? Le mois a au moins 1 jour dans cet intervalle? Le mois a tous les jours dans l'intervalle? Aussi comment faire, vous avez besoin de représenter un mois à l'aide d'un DateTime
struct? - le 1er du mois?OriginalL'auteur Andy Evans | 2010-10-08
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Cela inclut à la fois le mois de départ et à la fin du mois. Ceci trouve combien de mois il ya, puis crée un nouveau
DateTime
basé surd0
s le mois et l'année. Cela signifie que les mois sont commeyyyy-MM-01
. Si vous voulez qu'il comprend l'heure et le jour ded0
vous pouvez remplacernew DateTime(d0.Year, d0.Month, 1).AddMonths(m)
pard0.AddMonths(m)
.Je vois vous avez besoin d'un tableau, dans ce cas vous pouvez utiliser
monthsBetween(..., ...).ToArray()
ou mettre.ToArray()
à l'intérieur de la méthode.OriginalL'auteur Lasse Espeholt
Depuis que j'ai juste besoin de l'année et de mois entre deux dates, j'ai modifié Lasse Espeholt réponse un peu. supposons que:
d0 = 2012-11-03
d1 = 2013-02-05
Le résultat sera quelque chose comme ceci:
2012-11
2012-12
2013-01
2013-02
OriginalL'auteur Niloofar
Vous pourriez énumérer les incréments de mois avec:
et ensuite appeler
ToArray()
sur que si vous voulez un tableau. C'est une assez bonne sur le fait d'avoir des valeurs qui sont susceptibles d'être ce que l'on veut; par exemple, si vous commencez à Jan 31st de votre prochaine obtenir 28 Févème (ou 29ème sur les années bissextiles), puis le 31 marsst, puis le 30 Avrilème et ainsi de suite.Je ne suis pas sûr que ce soit une mauvaise chose, parce que je ne suis pas sûr que ce que l'exigence de la question est de considérer "entre". Il pourrait certainement être modifié de façon à inclure avril dans ce cas, je ne sais pas si il le devrait.
OriginalL'auteur Jon Hanna
Est-ce ce que vous recherchez? L'exigence est très ambiguë.
OriginalL'auteur Christian Hayter