web-dev-qa-db-fra.com

Comment comparer DateTime en C #?

Je ne veux pas que l'utilisateur donne la date ou l'heure de retour.

Comment puis-je comparer si la date et l'heure entrées est MOINS alors l'heure actuelle?

Si la date et l'heure actuelles sont 17 juin 2010, 12h25 PM, je veux que l'utilisateur ne puisse pas donner la date avant le 17 juin 2010 ni l'heure avant 12h25.

Comme ma fonction, retourne false si l'heure saisie par l'utilisateur est 16 juin 2010 et l'heure 12:24.

116
Ashish Ashu

MSDN: DateTime.Compare

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;

if (result < 0)
   relationship = "is earlier than";
else if (result == 0)
   relationship = "is the same time as";         
else
   relationship = "is later than";

Console.WriteLine("{0} {1} {2}", date1, relationship, date2);
// The example displays the following output:
//    8/1/2009 12:00:00 AM is earlier than 8/1/2009 12:00:00 PM
156
Ahmet Kakıcı

Microsoft a également implémenté les opérateurs '<' et '>'. Vous les utilisez donc pour comparer deux dates.

if (date1 < DateTime.Now)
   Console.WriteLine("Less than the current time!");
281
MuSTaNG

Dans le cas général , vous devez comparer DateTimes avec le même Kind:

_if (date1.ToUniversalTime() < date2.ToUniversalTime())
    Console.WriteLine("date1 is earlier than date2");
_

Explication de MSDN à propos de DateTime.Compare (Ceci est également pertinent pour des opérateurs tels que _>_, _<_, _==_ et etc.):

Pour déterminer la relation entre t1 et t2, la méthode Compare compare la propriété Ticks de t1 et t2 mais ignore leur propriété Kind . Avant de comparer les objets DateTime, assurez-vous qu'ils représentent les heures dans le même fuseau horaire.

Ainsi, une simple comparaison peut donner un résultat inattendu lorsqu'il s'agit de DateTimes qui sont représentés dans des fuseaux horaires différents.

1
AlbertK
//Time compare.
private int CompareTime(string t1, string t2)
{
    TimeSpan s1 = TimeSpan.Parse(t1);
    TimeSpan s2 = TimeSpan.Parse(t2);
    return s2.CompareTo(s1);
}
1
Dieu Phan Dinh