2009-10-07 25 views
10

tengo una fecha que está en un formato llamado 'String (en tiempo generalizado)', ver MSDN linked here, tengo que comprobar si esta fecha es hoy y si se trata de hacer X.C# ¿Cómo puedo verificar si una fecha que actualmente es una cadena es hoy?

Para complicar un poco tengo una int que es en este ejemplo 4, si int es 4, entonces quiero verificar si la fecha que está en el formato 'String (tiempo generalizado') es en los últimos 4 días, el int quizás 7, 24, 30 etc.

¿Cómo escribo esto? Soy un novato y estoy muy agradecido por la ayuda.

Gracias

Respuesta

32

De esta manera:

DateTime dt; 
    if (DateTime.TryParse(stringValue, out dt) && 
     dt.Date == DateTime.Today) 
    { 
     // do some stuff 
    } 

Para comprobar si está en cualquier momento dentro de los últimos cuatro días,

DateTime dt; 
    if (DateTime.TryParse(stringValue, out dt) && 
     dt.Date > DateTime.Today.AddDays(-4f) && 
     dt < DateTime.Now) 
    { 
     // do some stuff 
    } 

o, como un método de extensión

public static bool WithinPreviousPeriod(this DateTime dt, int daysBack) 
{ 
    return dt.Date > DateTime.Today.AddDays(-daysBack)) 
      && dt < DateTime.Now; 
} 
+0

impresionante, ¿cómo puedo comprobar si estaba dentro de los últimos 4 días? Gracias –

+0

¿Esto solucionará el problema en cualquier computadora en cualquier localidad, o el análisis está relacionado con la configuración regional de su sistema? Solo pregunto porque mucha gente tiene problemas con las citas. – spender

+0

DateTime.Parse no maneja el formato de "Tiempo generalizado". Aquí hay un valor de ejemplo de la RFC: 199412161032Z. Tendrás que pasar una cadena de formato personalizado. – David

6
if(DateTime.Parse(yourString).Date == DateTime.Now.Date) 
{ 
    //do something 
} 

Debería ver si el día es hoy. Sin embargo, falta la comprobación de errores (se supone que yourString es una cadena de fecha y hora válida).

para hacer el registro de entrada más complicado que podría hacer:

DateTime date = DateTime.Parse(yourString); 
int dateOffset = 4; 

if(date.Date >= DateTime.Now.AddDays(-dateOffset).Date) 
{ 
//this date is within the range! 
} 
+0

Gracias Alan, intentaré esto en breve. –

Cuestiones relacionadas