Quelle est la meilleure pratique pour obtenir un DateTime aléatoire entre deux dates-heures?
Je suis en train d'affecter la valeur d'une simple DateTime
champ de données.
Je souhaite obtenir une date aléatoire/temps entre deux dates/heures (par exemple, min date/heure et le max de la date/heure).
Donc permet de l'imaginer je suis après un hasard de date/heure entre
1/1/2000 10:00:00am
et 1/1/2000 5:00:00pm
.
Aussi, ce code sera utilisé dans une boucle for, avec 100 éléments ... ce qui veut dire tous les 100 éléments aléatoires date/temps entre le min/max date/période de temps.
Des idées?
source d'informationauteur Pure.Krome
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer de l'utiliser:
Cela vous donnera des moments différents à la minute près. Si vous voulez 100 (ou quelque chose de plus de 1)
DateTime
s alors seulement de créer de laRandom
objet d'une fois. Le Page MSDN surau Hasard
explique en détail pourquoi la création de plusieursRandom
objets en succession rapide est une mauvaise idée.L'aide d'un autre
TimeSpan
constructeur vous donnera les différentes granularité. À partir de la TimeSpan constructeur MSDN:Voici mon algorithme et le code:
créer une nouvelle date d'entre eux. Ajoutez simplement ce nombre aléatoire comme minutes pour le début datetime.
Très rapidement:
Tout d'abord, comprendre ce que la précision est que vous souhaitez sur le hasard DateTime (heures,minutes,secondes,ms,etc).
Puis comprendre la différence entre les deux dates dans l'unité.
Créer un nombre entier aléatoire entre 0 et cette différence.
Ajouter le nombre entier aléatoire dans des parts à la date initiale.
Compte tenu du cas d'utilisation indiquées ci-dessus, calculer la différence en dehors de la boucle for.
Intérieur de la boucle for, obtenir l'aléatoire int et de construire la date aléatoire.
Un one-liner basé sur ChrisF la solution de
C'est ce que j'utilise:
J'ai utilisé l'approche de la accepté de répondre, mais a modifié légèrement comme j'ai eu des problèmes avec elle.
Voici une méthode à l'aide d'un nombre aléatoire de tiques:
Cette méthode est exclusif à la dernière date et inclusive de la première. Vous pouvez facilement inclure la dernière date par l'ajout d'une tique à la base
(endDate - startDate).Ticks
quantité.