2009-10-25 6 views
2

Je dois travailler avec les dates et les heures de mon projet .NET, et l'une des choses que je dois faire est d'obtenir la date actuelle et d'y ajouter 2 semaines, et si la date entrée par l'utilisateur est après ces deux semaines jeter une erreur. Ou, si la date qu'ils ont entrée est antérieure à la date actuelle, jeter une autre erreur.Horodatage dans .NET

Maintenant, je sais comment faire cela, mais pas avec la façon dont .NET semble gérer les dates. Dans le passé, je n'ai travaillé qu'avec des horodatages (probablement parce que tout ce que j'ai fait dans le passé a été sous Unix) et .NET ne semble pas avoir un horodatage pour gérer la date ou l'heure.

Quelqu'un peut-il me dire comment j'irais à ce sujet?

Merci.

+0

Voulez-vous dire équivalent d'horodatage SQL dans .NET? – Tarik

+0

Votre question est plutôt vague. Voulez-vous savoir comment utiliser la classe 'DateTime', ou comment travailler avec les horodatages Unix? Ou quelque chose de complètement différent? – mgbowen

+0

La question est assez claire, comment valider qu'une entrée d'utilisateur est dans une fenêtre de 14 jours. –

Répondre

1

Il existe la classe DateTime dans .NET, mais je ne sais pas vraiment ce que vous entendez par ".NET n'a pas un horodatage de la date." Voulez-vous dire un moyen de générer ou de travailler avec les horodatages Unix?

Pour convertir un horodatage Unix à un DateTime, vous pouvez le faire:

DateTime epoch = new DateTime(1970, 1, 1); 
epoch = epoch.AddSeconds(timestamp); 

Pour ajouter deux semaines, vous utilisez la méthode AddDays.

0
var userInputDate = DateTime.Parse(someInput); 

if(userInputDate > DateTime.Now.AddDays(14)) throw new ApplicationException("Dont like dates after 2 weeks of today"); 
if(userInputDate < DateTime.Now) throw new ApplicationException("Date shouldnt be before now, for some reason"); 
1
  // Whatever class is able to retrieve the date the user just entered 
      DateTime userDateTime = Whatever.GetUserDateTime(); 
      if (userDateTime > DateTime.Now.AddDays(14)) 
       throw new Exception("The date cannot be after two weeks from now"); 
      else if (userDateTime < DateTime.Now) 
       throw new Exception("The date cannot be before now"); 
4
DateTime value = ...your code... 
DateTime today = DateTime.Today, max = today.AddDays(14); 
if(value < today || value > max) { 
    throw new ArgumentOutOfRangeException("value"); 
} 

Un point clé: l'accès uniquement Now/Todayune fois dans un contrôle connexe - sinon vous pouvez obtenir des résultats très Freaky juste sur le coup de minuit. Un bord extrême, peut-être ...

1

Pourquoi ne pas utiliser

if (objUserDate.Date > DateTime.Today.AddDays(14)) 
{ 
    //Error 1 
} 
else if (objUserDate.Date < DateTime.Today) 
{ 
    //Error 2 
} 
+0

+1 Pour l'utilisation de DateTime.Today. Si l'heure n'est pas pertinente, elle ne doit pas être incluse dans les calculs. – Joren

0

j'aurais probablement quelque chose comme ceci:

DateTime twoWeeksFromNow = DateTime.Now.AddDays(14); 

if(enteredDateTime > twoWeeksFromNow) 
{ 
    throw "ERROR!!!"; 
}