2012-01-05 12 views
6

मैं किसी विशिष्ट उपयोगकर्ता के लिए कैलेंडर उपलब्धता क्वेरी करने के लिए Exchange 2007 API का उपयोग करने का प्रयास कर रहा हूं। मेरे नमूना कोड निम्न अपवाद उत्पादन किया जाता है:एक डेटटाइम ऑब्जेक्ट I के बीच अंतर और डेटटाइम.अब

समय अवधि FreeBusyViewOptions.TimeWindow के लिए निर्दिष्ट अमान्य है।

यहाँ नमूना कोड:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 

service.AutodiscoverUrl("[email protected]"); 

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

TimeWindow tw = new TimeWindow(startTime, startTime.AddHours(8)); 

GetUserAvailabilityResults result = service.GetUserAvailability(new List<AttendeeInfo> { new AttendeeInfo("[email protected]") }, tw, AvailabilityData.FreeBusyAndSuggestions); 

अजीब बात यह है कि अगर मैं निम्नलिखित यह काम करता है के साथ अपने STARTTIME काम की जगह:

DateTime startTime = DateTime.Now; 

दिनांक समय वस्तु में क्या फ़र्क है मैं बनाया गया और डेटटाइम द्वारा उत्पादित वस्तु.अब। मैंने डिबगिंग करते समय उन्हें विस्तार से जांच लिया है और कोई अंतर नहीं मिल रहा है।

कोई भी विचार?

+0

दिनांक समय अब ​​आपको एक वर्तमान डेटाटाइम देता है, और आपके द्वारा प्रदान किया गया डेटाटाइम 1/6/2012 7:00:00 पूर्वाह्न –

+0

मुझे लगता है कि वास्तविक दिनांक/समय अलग है, भले ही मैं अपनी ऑब्जेक्ट की दिनांक/समय बराबर रखूं अब यह एक ही मुद्दा है। – joshb

उत्तर

21

यह वास्तव में GetUserAvailable विधि में किसी भी दिनांक-समय मैनिपुलेशन के विपरीत एक मुद्दा प्रतीत होता है।

MSDN documentation के अनुसार:

GetUserAvailability (जेनेरिक, TimeWindow, AvailabilityData, AvailabilityOptions) विधि केवल समय अवधि है कि 00:00 बजे से कम 24 घंटे लंबे की एक न्यूनतम और कहा कि शुरू और समाप्त कर रहे हैं का समर्थन करता है । विधि के परिणामों को कम समय अवधि तक सीमित करने के लिए, आपको क्लाइंट पर परिणामों को फ़िल्टर करना होगा।

+0

धन्यवाद। मैंने कई बार दस्तावेज़ों को देखा और पूरी तरह से इसे याद किया। अजीब बात यह है कि यह नहीं है मेरे परीक्षण के अनुसार हमेशा सत्य (कभी-कभी यह गैर-12am शुरू होता है और <24 घंटे की अवधि के साथ काम करता है) लेकिन यदि मैं उन मानकों के भीतर रहता हूं तो यह हमेशा काम करता है। – joshb

+1

बस वही "ओह बकवास" अनुभव था। मदद –

+0

मेरे पास एक ही अपवाद था। समस्या यह थी कि मेरी क्वेरी, जिसमें एक प्रारंभ और समाप्ति तिथि भी शामिल है "DefineAvailableOptions (query)", provi के साथ मेल नहीं खाती GetUser उपलब्धता में कट प्रारंभ और समाप्ति दिनांक। तो 24h सीमा के साथ पागल ड्राइव से पहले आप इसे कम से कम पहले देखना चाहते हैं। –

2

हो सकता है कि आपके पास समय क्षेत्र और यूटीसी के बीच अंतर के साथ कुछ नकारात्मक समय खिड़की का उत्पादन हो। AddHours (8) से AddHours (24) तक बड़े मानों तक बढ़ने का प्रयास करें और देखें कि क्या होता है।

+0

आपके सुझाव ने अपवाद को समाप्त कर दिया (धन्यवाद) लेकिन मुझे सच में यकीन नहीं है कि क्यों। किसी भी तरह से, मैं उसी दिनांक समय में घंटे जोड़ रहा हूं, तो मैं नकारात्मक समय खिड़की के साथ कैसे समाप्त हो सकता हूं चाहे वह स्थानीय या यूटीसी हो? – joshb

1

Kind अलग है। यह हो सकता है कि यह क्या देख रहा है।

new DateTime(2012, 1, 6, 7, 0, 0) 

का एक प्रकार का "अनिर्दिष्ट" है।

जबकि

DateTime.Now 

"स्थानीय" का एक प्रकार है।

ToLocalTime का उपयोग कर स्थानीय करने के लिए तरह सेट करने का प्रयास:

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

मैंने देखा कि जब भी मैं डिबगिंग कर रहा था लेकिन ToLocalTime विधि का उपयोग कर या डेटटाइमकिंड को कन्स्ट्रक्टर में पास करने से कुछ भी नहीं बदला। – joshb

2

बनाने के लिए किस तरह का उल्लेख करें यह समान अब करने के लिए:

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

कुछ बाधाओं कि आप वास्तव में यूटीसी जरूरत है। शायद सर्वर कॉन्फ़िगरेशन पर निर्भर करता है।

+0

डेटटाइमकिंड में पास करना अभी भी त्रुटि उत्पन्न करता है। – joshb

0

कक्षा दिनांक के लिए रचनाकारों और कोड को देखें।

private ulong dateData; 

तो सभी निर्माताओं के समान हैं और DateTime.Now एक सार्वजनिक स्थैतिक विधि है कि दिनांक समय वर्ग वही चीज़ करने का एक उदाहरण देता है:

वे सब के सब निजी चर बदल देते हैं।

त्रुटि संदेश में कहा गया है:

समय अवधि FreeBusyViewOptions.TimeWindow के लिए अमान्य है।

ऐसा इसलिए है क्योंकि यह अमान्य है!

आपने भविष्य की तारीख में रखा है, और इसकी संभावना अधिक है।वर्तमान तिथि के साथ प्रयास करें।

+0

डेटटाइम.अब विधि को देखते हुए, इसके सभी रिटर्न प्रारूप के हैं ... नया डेटटाइम लौटें (मान, डेटटाइमकिंड.लोकल ... –

+0

मैंने वर्तमान तिथि की कोशिश की है और यह एक ही अपवाद उत्पन्न करता है। GetUser उपलब्धता उपलब्धता का भविष्य भविष्य की कैलेंडर उपलब्धता की जांच करना है, इसलिए अगर भविष्य की तारीख विंडोज़ को स्वीकार नहीं किया जाता है तो यह अधिक समझ में नहीं आता है। – joshb

2

मुझे पता है कि निर्दिष्ट TimeWindow कम से कम एक आधी रात होना चाहिए। लेकिन मुझे पता नहीं क्यों।

संबंधित मुद्दे