2010-06-17 4 views
82

Je ne veux pas que l'utilisateur donne la date ou l'heure de retour.Comment comparer DateTime en C#?

Comment puis-je comparer si la date et l'heure entrées sont MOINS que l'heure actuelle? Si la date et l'heure actuelles sont 17-Jun-2010, 12:25, je veux que l'utilisateur ne puisse pas donner de date avant le 17 juin -2010 et avant 12h25.

Comme ma fonction return false si le temps est entré par l'utilisateur 16-Jun-2010 et l'heure 12:24

Répondre

111

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 
+81

HEY! S'il vous plaît ne pas upvote ma réponse. La réponse de MuSTaNG est meilleure. –

+9

Nevermind, juste upvote ma réponse. (Essayons de cette façon) –

+2

Votre réponse fournit un moyen de voir quelle est la différence au lieu de simplement savoir que la date est avant ou après. Bien sûr, sa réponse est meilleure pour l'OP, mais la vôtre est meilleure pour certaines personnes qui sont venues ici de google (auto inclus). – levininja

227

Microsoft a également mis en place les opérateurs '' < et '>'. Vous les utilisez donc pour comparer deux dates.

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

Y at-il une référence pour cela? – cja

+5

Source MSDN; ceux-ci sont documentés en tant qu'opérateurs DateTime étiquetés maladroitement comme "DateTime.Greater than", "DateTime.LessThanOrEqualTo" ..... https://msdn.microsoft.com/en-us/library/ff986512%28v=vs.90% 29.aspx –

+0

version actuelle de .NET: https://msdn.microsoft.com/en-us/library/ff986512(v=vs.110).aspx – juFo

9

MuSTaNG's answer dit tout, mais je suis encore ajouter à le rendre un peu plus élaborée, avec des liens et tous.


Les opérateurs classiques

sont disponibles pour DateTime depuis .NET Framework 1.1. En outre, l'addition et la soustraction de DateTime objets sont également possibles en utilisant les opérateurs classiques + et -.

Un exemple de MSDN:

Égalité:
System.DateTime april19 = new DateTime(2001, 4, 19); 
System.DateTime otherDate = new DateTime(1991, 6, 5); 

// areEqual gets false. 
bool areEqual = april19 == otherDate; 

otherDate = new DateTime(2001, 4, 19); 
// areEqual gets true. 
areEqual = april19 == otherDate; 

D'autres opérateurs peuvent être utilisés aussi. Voici la liste all operators disponible pour DateTime.

+1

Vous pouvez simplement modifier leur réponse pour élaborer. Dans tous les cas, vous ne pouvez pas utiliser '+' pour deux opérandes 'DateTime', vous pouvez faire' DateTime - DateTime', ou 'DateTime + TimeSpan', ou' DateTime - TimeSpan'. – Joey

0
//Datetime compare. 
private int CompareTime(string t1, string t2) 
{ 
    TimeSpan s1 = TimeSpan.Parse(t1); 
    TimeSpan s2 = TimeSpan.Parse(t2); 
    return s2.CompareTo(s1); 
} 
+0

Il veut comparer 'DateTime' pas' string' – Danh

+0

vous pouvez convertir datetime à la chaîne –

+0

ou: vous pouvez utiliser: DateTime.Compare (startDate, endDate) –