2012-04-24 11 views
23

Digamos que tenemos¿Cómo comparar momento parte de fecha y hora

DateTime t1 = DateTime.Parse("2012/12/12 15:00:00.000"); 

y

DateTime t2 = DateTime.Parse("2012/12/12 15:03:00.000"); 

Cómo comparar en C# y decir cual es "es posterior a"?

+2

Su pregunta no coincide con el título de la pregunta. ¿Desea comparar DateTime o solo la parte de tiempo de DateTime? –

Respuesta

55

Puede utilizar la propiedad TimeOfDay y utilizar el Compare contra ella.

TimeSpan.Compare(t1.TimeOfDay, t2.TimeOfDay) 

por la documentación:

-1 if t1 is shorter than t2. 
0 if t1 is equal to t2. 
1 if t1 is longer than t2. 
+0

Pls compartir el código de muestra –

+1

@Peretz sin falta de respeto, pero esta respuesta debe decirle todo lo que necesita saber sin una muestra de código ... – Jon

+0

@Peretz He actualizado mi respuesta con un fragmento de código y cómo usar los resultados. –

2

Uso the DateTime.Compare método:

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); 

Editar: Si lo que desea es comparar los tiempos, y pasar por alto la fecha, puede utilizar la TimeOfDay como han sugerido otros. Si necesita algo menos fino, también puede usar las propiedades Hour y Minute.

+0

Esto no se enfoca en Tiempo –

+0

Una fecha no es más que una realización del tiempo. Las marcas, por ejemplo, son la cantidad de intervalos de 100 nanosegundos que han transcurrido desde las 12:00:00 de la medianoche del 1 de enero de 0001. Por lo tanto, comparar dos fechas es comparar la diferencia en Ticks. La comparación de tiempo es implícita. – mgnoonan

+2

Sí, pero el OP solo solicita la comparación de tiempo. Si compara la marca completa, entonces no se probará si 6AM es posterior a las 5 AM, por ejemplo, que es lo que parece estar implicado en la pregunta –

14

El <, <=, >, >= operadores de todo el trabajo directamente en DateTime y TimeSpan objetos. Así que algo como esto funciona:

DateTime t1 = DateTime.Parse("2012/12/12 15:00:00.000"); 
DateTime t2 = DateTime.Parse("2012/12/12 15:03:00.000"); 

if(t1.TimeOfDay > t2.TimeOfDay) { 
    //something 
} 
else { 
    //something else 
} 
+0

Gracias, supongo ... ¿era algo así como DateTime vs. TimeSpan como un rompimiento de trabas que justificaba un voto negativo en primer lugar? Yo creo que no. – kaveman

+0

No respondió la pregunta tal como se publicó, por lo que sí, normalmente eso es para lo que son los votos a favor. Además, olvidó mencionar == también funciona. –

+0

Realmente estamos superando a un caballo muerto aquí, pero obviamente estás atrapado en estos detalles tontos (también con @mgnoonan). Hubo algunas ediciones entre el momento en que se colocó el OP, mi respuesta original, su respuesta, mi respuesta editada, etc. Ejercite el juicio de sonido antes de votar negativamente cada interpretación de la pregunta que no coincida con la suya. – kaveman

Cuestiones relacionadas