7
votes

Différence entre un objet DateTime, je crée et DateTime.Now

J'essaie d'utiliser l'API Exchange 2007 sur la disponibilité du calendrier de requêtes pour un utilisateur spécifique. Mon exemple de code produit l'exception suivante:

la durée de la durée spécifiée pour FreebusyViewOptionS.Timewindow est invalide. p> blockQuote>

voici le code d'exemple: p> xxx pré>

Le truc de Wierd est, si je remplace mon affectation de démarrage avec ce qui suit, il fonctionne: p>

DateTime startTime = DateTime.Now;


2 commentaires

Date Time vous donne maintenant une date d'heure actuelle et une date de données que vous avez fournie est le 1/6/2012 7:00:00 AM.


Je réalise que la date / l'heure réelle est différente mais même si je définissais la date / heure de mon objet égale à la même question.


6 Réponses :


2
votes

Peut-être que cela a quelque chose à voir avec la différence entre votre fuseau horaire et UTC, produisant une fenêtre de temps négative. Essayez d'augmenter d'Addhours (8) aux valeurs plus grandes jusqu'à Addhours (24) et voyez ce qui se passe.


1 commentaires

Votre suggestion a éliminé l'exception (merci) mais je ne sais pas vraiment pourquoi cependant. De toute façon, j'ajoute des heures à la même date d'heure, alors comment puis-je me retrouver avec une fenêtre de temps négative, que ce soit local ou UTC?



1
votes

Le type code> est différent. Cela peut être ce qu'il recherche.

DateTime startTime = new DateTime(2012, 1, 6, 7, 0, 0).ToLocalTime();


1 commentaires

J'ai remarqué cela aussi lorsque je déboguais mais j'utilise la méthode TolocalTime ou en passant dans le constructeur ne change rien.



2
votes

Spécifiez le type pour le rendre identique à:

     DateTime startTime = new DateTime(2012, 1, 6, 7, 0, 0, DateTimeKind.Local);


0 commentaires

0
votes

Regardez les constructeurs et le code de la classe DateTime.

Tous modifier la variable privée: xxx

de sorte que tous les constructeurs sont de la même manière et de la date d'heure. Maintenant est une méthode statique publique qui renvoie une instance de la classe DateTime qui fait la même chose.

Le message d'erreur indiqué:

la durée de l'heure spécifiée pour FreebusyViewOptionS.Timewindow est invalide.

c'est-à-dire parce que est invalide!

Vous avez mis à l'avenir une date ultérieure et elle est probablement vérifiée pour cela. Essayez avec une date de courant.


2 commentaires

En regardant la méthode DateTime.Now, tous ses retours sont du format ... Retourne nouvelle dateTime (valeur, denttimekind.local ...


J'ai essayé la date actuelle et produit la même exception. Le point de vue de la méthode de getuseravailabilité consiste à vérifier la disponibilité du calendrier futur afin qu'il n'aurait pas fort peu de sens si cela n'a pas accepté les fenêtres de date futures.




2
votes

Je découvre que l'horaire spécifié doit contenir au moins un minuit. Mais je ne sais pas pourquoi.


0 commentaires