2010-06-17 56 views
82

No deseo que el usuario proporcione la fecha o la hora posterior.¿Cómo comparar DateTime en C#?

¿Cómo puedo comparar si la fecha y hora introducidas son MENOS que la hora actual?

Si la fecha y la hora actual se encuentra 17-Jun-2010, 24:25, quiero usuario no puede dar la fecha anteriores al 17 jun -2010 y hora antes de 24:25.

Al igual que mi función return false si el tiempo introducido por el usuario es el 16-Jun-2010 y la hora 24:24

Respuesta

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! Por favor, no vote mi respuesta. La respuesta de MuSTaNG es mejor. –

+9

No importa, acabo de votar mi respuesta. (Probemos de esta manera) –

+2

Su respuesta proporciona una manera de ver cuál es la diferencia en lugar de simplemente saber que la fecha es anterior o posterior. Por supuesto, su respuesta es mejor para el OP, pero la suya es mejor para algunas personas que llegaron aquí desde google (incluido). – levininja

227

Microsoft también ha puesto en marcha los operadores < ' y '>'. Entonces los usa para comparar dos fechas.

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

¿Hay alguna referencia para esto? – cja

+5

Fuente MSDN; estos son documentados como Operadores DateTime marcados torpemente como "DateTime.Greater than", "DateTime.LessThanOrEqualTo" ..... https://msdn.microsoft.com/en-us/library/ff986512%28v=vs.90% 29.aspx –

+0

versión .NET actual: https://msdn.microsoft.com/en-us/library/ff986512(v=vs.110).aspx – juFo

9

MuSTaNG's answer lo dice todo, pero todavía estoy añadiendo para que sea un poco más elaborado, con enlaces y todos.


Los operadores convencionales

están disponibles para DateTime desde .NET Framework 1.1. Además, también es posible sumar y restar objetos DateTime utilizando los operadores convencionales + y -.

Un ejemplo de MSDN:

Igualdad:
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; 

Otros operadores se puede utilizar de igual manera.

Aquí está la lista all operators disponible para DateTime.

+1

Podrías editar sus respuestas para elaborarlas. En cualquier caso, no puede usar '+' para dos operandos 'DateTime', puede hacer' DateTime - DateTime', o 'DateTime + TimeSpan', o' 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

Quiere comparar 'DateTime' no' cadena' – Danh

+0

puede convertir fecha y hora a la cadena –

+0

o: puede usar: DateTime.Compare (fecha de inicio de sesión, fecha de finalización) –