J'ai l'extrait suivant que j'utilise pour obtenir les dates individuelles entre deux dates: Cependant, la section suivante p> n'a pas de .month pour retourner les mois à la plage de dates. P> Par exemple, si je fournis le 1/1/2010 et 6/1/2010, je m'attendrais à renvoyer le 1/1/2010, 2/1/2010, 3/1/2010, 4/1 / 2010, 5/1/2010 et 6/1/2010. P> Des idées? P> P>
4 Réponses :
Est-ce ce que vous cherchez? L'exigence est très ambiguë.
DateTime[] calendarMonthBoundaries = Enumerable.Range(0, 1 + endDate.Subtract(startDate).Days) .Select(offset => startDate.AddDays(offset)) .Where(date => date.Day == 1) .ToArray();
Essayez ceci:
static IEnumerable<DateTime> monthsBetween(DateTime d0, DateTime d1) { return Enumerable.Range(0, (d1.Year - d0.Year) * 12 + (d1.Month - d0.Month + 1)) .Select(m => new DateTime(d0.Year, d0.Month, 1).AddMonths(m)); }
Vous pouvez énumérer des incréments de mois avec: puis appelez toarray () code> à ce sujet si vous voulez un tableau. Il est raisonnablement bon d'avoir des valeurs susceptibles d'être ce qui est recherché; par exemple. Si vous commencez au 31 janvier st sup> vous obtiendrez ensuite le 28 février TH sup> (ou 29 TH sup> sur beigh années), puis le 31 mars > St sup>, puis le 30 avril th sup> et ainsi de suite. p> p>
DateTime [] mois = byMonths ({30/01/2013 12:00:00 AM}, {4/04/2013 12:00:00 AM}). TOARRAY (); Cela ne renvoie que 3 mois (janvier, février, mars), avril est manquant.
@Davelucre Je ne suis pas sûr que ce n'est pas une mauvaise chose, parce que je ne suis pas sûr de ce que l'exigence de la question envisage de "entre". Il pourrait certainement être modifié d'inclure avril dans ce cas, je ne sais tout simplement pas si cela devrait.
Depuis que j'avais juste besoin de l'année et du mois entre deux dates, j'ai modifié Lasse Espeholt répond un peu. supposer: D0 = 2012-11-03
D1 = 2013-02-05 P>
Le résultat sera quelque chose comme ceci: p>
2012-11 p>
2012 -12 p>
2013-01 p>
2013-02 p>
Comment un
mois code> travaux de propriété? Comment saurait-il savoir quel mois de jours d'utilisation à utiliser? Après la soustraction, vous venez de rester avec une tempute qui est neutre de date et ne sait donc rien quels mois à utiliser.
Dupliqué possible de différence en mois
.days Code> renvoie le nombre nombre de jours b> dans l'intervalle, pas les jours réels. Comment définissez-vous le fait que " un mois est compris entre 2 dates i>"? Le mois a au moins 1 jour b> dans cet intervalle? Le mois a tous les jours b> dans l'intervalle? De plus, comment avez-vous besoin de représenter un mois à l'aide d'un
DateTime code> struct? - comme le 1er du mois?