Étant donné une date de début du 1/1/2009 et une date de fin du 31/12/2009, comment puis-je parcourir chaque date et récupérer une valeur DateTime à l'aide de c #?
Merci!
Étant donné une date de début du 1/1/2009 et une date de fin du 31/12/2009, comment puis-je parcourir chaque date et récupérer une valeur DateTime à l'aide de c #?
Merci!
Une autre option de la mise en œuvre de l'Itérateur modèle de conception:
Cela peut sembler inutile, mais j'en fonction de comment vous utilisez cette fonctionnalité, vous pouvez également implémenter le design pattern Iterator.
Pense que sur ce. Supposons que tout fonctionne bien, et vous le copier/coller de tous sur la place, le "pour" de la phrase. Et soudain, dans le cadre des exigences, vous devez effectuer une itération tous les jours, mais ignorer certains d'entre eux ( comme dans le calendrier, ignorez les vacances, week-ends, personnalisée, etc )
Vous devez créer un nouveau "ciselée" et utilisez le Calendrier à la place. Ensuite, la recherche et le remplacement de vos pour de.
En programmation orientée objet, ce qui pourrait être réalisé à l'aide de l'Itérateur modèle.
De Wikpedia:
En programmation orientée objet, l'Itérateur modèle est un modèle de conception dans laquelle les itérateurs sont utilisés pour accéder aux éléments d'un ensemble d'objets de manière séquentielle , sans exposer sa représentation sous-jacente. Un Itérateur objet encapsule la structure interne de la façon dont l'itération se produit.
L'idée est donc d'utiliser une construction comme ceci:
DateTime fromDate = DateTime.Parse("1/1/2009");
DateTime toDate = DateTime.Parse("12/31/2009");
// Create an instance of the collection class
DateTimeEnumerator dateTimeRange =
new DateTimeEnumerator( fromDate, toDate );
// Iterate with foreach
foreach (DateTime day in dateTimeRange )
{
System.Console.Write(day + " ");
}
Et puis, si nécessaire, vous pouvez créer des sous-classes pour mettre en œuvre des algorithmes différents, l'un qui utilise AddDay(1), autres que les utilisations AddDay( 7 ) ou d'autres que de simples utilise le Calendrier à la place. Etc. etc.
L'idée est de réduire le couplage entre les objets.
Encore une fois, ce serait trop pour la plupart des cas, mais si l'itération formes pertinentes de la partie d'un système ( disons , vous créez une sorte quelle que soit la notification, pour une entreprise, et doit correspondre aux mondialisations
La mise en œuvre de base bien sûr, serait d'utiliser la pour.
public class DateTimeEnumerator : System.Collections.IEnumerable
{
private DateTime begin;
private DateTime end;
public DateTimeEnumerator ( DateTime begin , DateTime end )
{
// probably create a defensive copy here...
this.begin = begin;
this.end = end;
}
public System.Collections.IEnumerator GetEnumerator()
{
for(DateTime date = begin; date < end; date = date.AddDays(1))
{
yield return date;
}
}
}
Juste une idée :)
Définissez deux variables:
DateTime lowValue = DateTime.Parse("1/1/2009");
DateTime highValue = DateTime.Parse("12/31/2009");
Ensuite, ajoutez un jour à la valeur faible jusqu'à ce qu'elle soit égale à la valeur élevée:
while (lowValue <= highValue)
{
//Do stuff here
lowValue = lowValue.AddDays(1);
}
Ou quelque chose comme ça.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.