DateTime.Maintenant - première et dernière minutes de la journée
Est-il un moyen facile d'obtenir DateTime.Now
's "TimeMin
" et "TimeMax
"?
- Tu veux dire 00:00:00.000 et 23:59:59.999 ?
- Essayez de préparer votre logiciel afin d'être utilisable sur Mars un jour?
- Ce n' "TimeMin" et "TimeMax" signifie? Exactement?
- C'est quelque chose qui est utile pour le filtrage et les dates les questions relatives à l'
- Problème mineur avec le libellé. DateTime.Maintenant est (plus ou moins), précisément maintenant. Son min le temps est maintenant. Sa durée maximale est maintenant. Ce que vous voulez, c'est le temps minimum et maximum d'un jour donné, pas maintenant.
- son sujet d'obtenir la valeur de minuit
- La date d'aujourd'hui, mais au début de la journée est simple:
DateTime.Today
. - techniquement, l'objet DateTime magasins de tiques qui contient une plus grande fidélité que millisecondes, mais je suis d'accord ce sont des valeurs connues qui peuvent être faites des constantes si nécessaire.
- Voir ce post Comment obtenir les heures de début et fin de journée
Vous devez vous connecter pour publier un commentaire.
Voici deux extensions que j'utilise pour faire exactement cela.
Cela permet d'écrire:
ou
DateTime.Now.AbsoluteStart()
est redondant, car il serait identique àDateTime.Today
.DateTime.Today
est "Un objet qui est défini à la date d'aujourd'hui, avec le temps de la composante à 00:00:00." -- MSDN||
notation. Je comprends maintenant...return AbsoluteStart(dateTime).Date.AddDays(1).AddTicks(-1);
AbsoluteStart(dateTime) == dateTime.Date
J'aimerais utiliser les éléments suivants:
et l'utilisation
< endOfDay
au lieu de<= endOfDay
. Cela signifie qu'il fonctionne indépendamment du fait que la précision est minutes, secondes, millisecondes, les tiques, ou quelque chose d'autre. Cela permettra d'éviter des bugs comme celui que nous avons eu sur StackOverflow (si le conseil a été ignoré).Notez qu'il est important de n'appeler qu'
DateTime.Now
une fois si vous voulez que le début et la fin de la même journée.essayer
Si vous utilisez ce pour le filtrage, dans vos commentaires le suggèrent, il est probablement une bonne idée d'enregistrer le type DateTime.Maintenant dans une variable, juste au cas où la date de tiques entre les deux appels. Très peu probable, mais l'appeler assez de temps et il va inévitablement arriver un jour (la nuit plutôt).
Un petit tweak pour chasseur de la solution ci-dessus...
J'utilise la suite de l'extension de la méthode pour obtenir la fin de la journée:
Ce doit gérer le cas où la date est soit
DateTime.MinValue
ouDateTime.MaxValue
. Si vous appelez AddDays(1) DateTime.MaxValue, vous aurez une exception. De même, l'appel de AddTicks(-1) surDateTime.MinValue
permettra également de lancer une exception.Comme les autres answerers, je ne suis pas tout à fait sûr de ce que vous demandez, mais au cas où vous voulez le plus petit possible et le plus de temps possible, (pas seulement en une journée), puis il y a
DateTime.MinValue
etDateTime.MaxValue
de retour 1/1/0001 12:00:00 AMet 12/31/9999 11:59:59 PM respectivement.
Je vous conseille de regarder cette réponse:
Comment puis-je spécifier la dernière heure de la journée avec DateTime
Si votre original DateTimes aussi éventuellement inclure la fois, à l'aide de la AddDays() la méthode va ajouter une période complète de 24 heures, qui ne peuvent pas être précisément ce que vous voulez.
Vous devez être prudent d'utiliser
lorsqu'elle est passée à la procédure stockée.
Il peut arriver que la valeur va être approximée à la prochaine journée.
Veuillez noter que si vous êtes en passant cette fois à sql server, vous devez utiliser
Voir:
Comment puis-je obtenir le temps d'une journée particulière
Pas très exacte, mais fixe mes problèmes. Maintenant, nous pouvons utiliser AddMilliseconds, AddTicks et etc. Je pense que ce sera juste varier sur ce qui serait à même de satisfaire votre besoin.