簡體   English   中英

我創建的DateTime對象和DateTime.Now之間的區別

[英]Difference between a DateTime object I create and DateTime.Now

我正在嘗試使用Exchange 2007 API查詢特定用戶的日歷可用性。 我的示例代碼產生以下異常:

為FreeBusyViewOptions.TimeWindow指定的持續時間無效。

這是示例代碼:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

service.AutodiscoverUrl("email@domain.com");

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@domain.com") }, tw, AvailabilityData.FreeBusyAndSuggestions);

奇怪的是,如果我用以下內容替換我的startTime賦值它可以工作:

DateTime startTime = DateTime.Now;

我創建的DateTime對象與DateTime.Now生成的對象之間有什么區別。 我在調試時仔細檢查了它們,但找不到區別。

有任何想法嗎?

這實際上似乎是GetUserAvailability方法中的一個問題,而不是任何DateTime操作。

根據MSDN文檔

GetUserAvailability(Generic,TimeWindow,AvailabilityData,AvailabilityOptions)方法僅支持最少24小時的開始和結束的時間段。 要將方法的結果限制為較短的時間段,必須在客戶端上過濾結果。

我發現指定的TimeWindow必須包含至少一個午夜。 但我不知道為什么。

也許它與您的時區和UTC之間的差異有關,產生一個負時間窗口。 嘗試從AddHours(8)增加到更大的值到AddHours(24),看看會發生什么。

指定種類使其與現在相同:

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

有一些賠率,你實際上需要Utc。 可能取決於服務器配置。

Kind是不同的。 這可能是它正在尋找的東西。

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

有一種“未指定”。

DateTime.Now

有一種“本地”。

嘗試使用ToLocalTime將類型設置為本地:

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

查看DateTime類的構造函數和代碼。

所有這些都改變了私有變量:

private ulong dateData;

因此,所有構造函數都是相同的,DateTime.Now是一個公共靜態方法,它返回執行相同操作的DateTime類的實例。

錯誤消息說明:

為FreeBusyViewOptions.TimeWindow指定的持續時間無效。

那是因為它無效!

你輸入了一個未來的日期,它很可能會檢查它。 嘗試使用當前日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM