2009-10-07 5 views
10

J'ai une date dans un format appelé « String (-Generalized Time) », voir MSDN linked here, je dois vérifier si cette date est aujourd'hui et si elle est X. faireC# Comment vérifier si une date qui est actuellement une chaîne est aujourd'hui?

Pour compliquer un peu je un int qui est dans cet exemple 4, si l'int est 4 alors je veux vérifier si la date qui est dans le format 'String (Generalized-Time)' est dans les 4 derniers jours, l'int peut-être 7, 24, 30 etc.

Comment est-ce que j'écrirais ceci? Je suis un novice et très reconnaissant de l'aide.

Merci

Répondre

32

Comme ceci:

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

Pour vérifier si elle est à tout moment au cours des quatre derniers jours,

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

ou, en tant que méthode d'extension

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

Impressionnant, comment pourrais-je vérifier si elle était au cours des 4 derniers jours? Merci –

+0

Est-ce que cela va prendre soin du problème sur n'importe quel ordinateur dans n'importe quelle localité, ou est l'analyse liée à vos paramètres régionaux du système? Je demande seulement parce que tant de gens ont des ennuis avec les dates. – spender

+0

DateTime.Parse ne gère pas le format "Generalized Time", cependant. Voici un exemple de valeur de la RFC: 199412161032Z. Vous devrez passer une chaîne de format personnalisé. – David

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

Devrait voir si le jour est aujourd'hui. Cependant, il manque une vérification d'erreur (il suppose que yourString est une chaîne datetime valide).

Pour faire le contrôle plus compliqué que vous pourriez faire:

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

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

Merci Alan, je vais essayer cela sous peu. –

Questions connexes