我正在開發在位於中央時區的系統上執行的C#.Net應用程序。應用程序使用它們提供的API從第三方獲取信息。我已經使用WSDL生成我的應用程序訪問該API的代碼...他們的報告API允許您爲報告定義開始日期和結束日期。這些是C#DateTime字段和XSD:dateTime。現在,當我設置開始日期和結束日期並允許API創建SOAP消息時,日期並不總是包含時區,除非我使用ToLocalTime方法設置日期字段;但是,該方法將在中央時區(CST)中創建日期時間字段,但我需要讓它在太平洋時區(PST)中創建這些字段。如果我將我的機器時間設置爲PST,那麼一切都很好......但當然這會導致其他時間問題。我可以使用什麼方法來控制DateTime的格式?或者,是否有可以在C#中設置的應用程序設置,允許時區控制?如何控制System.Xml.Serialization中或應用程序執行期間的時區格式?
回答
我想你可以通過使用System.TimeZoneInfo來實現這一點。例如:
TimeZoneInfo.ConvertTime(myLocalTime, TimeZoneInfo.FindSystemTimeZoneById(「Pacific Standard Time」));
嘗試對WSDL生成的類的日期時間字段進行賦值時發生此問題的變化---我必須記錄SOAP消息才能查看發送的內容......唯一的情況是時區是在使用ToLocalTime方法時 - 使用應用程序正在執行的機器的時區。 – Beal 2010-05-30 22:30:42
我想你有兩個選擇。顯然你可以做什麼取決於目標系統如何處理它接收的日期時間。
1-將日期時間轉換爲目標時區併發送沒有時區信息的請求。這將假定目標系統將接受沒有時區信息的日期時間作爲PST時區。
2-更改爲使用DateTimeOffset。這將允許您明確指定時區偏移量,並將與您指定的時區信息一起序列化。
如果可能,我會選擇2.
我也試過DateTimeOffset,我真的很喜歡...但WSDL生成的類有數據元素類型爲DateTime ....我永遠不會得到使用DateTimeOffset的變體有時區....是你暗示我修改了由WSDL生成的類? – Beal 2010-05-30 22:34:18
@Beal,我想你需要改變生成的類,我意識到這是可怕的做法,我個人會盡量避免它。但至少試着去看看它是否有效,那麼如果我們在正確的軌道上,我們可以看到是否有更好的方法來處理這個問題。 – 2010-05-31 17:44:19
試圖修改生成的類...這會導致與提供程序(雅虎EWS)的錯誤...試圖找出另一個替代方案.... – Beal 2010-06-07 19:46:13
- 1. 在c#中執行期間終止控制檯應用程序
- 2. C# - 控制檯應用程序執行期間捕獲空格鍵
- 3. 如何測量C#控制檯應用程序運行時間?
- 4. 控制應用程序執行次數
- 5. 日期和時間控制格式
- 6. 如何在Surface RT中執行控制檯應用程序
- 7. 如何在Java應用程序中執行控制檯commad?
- 8. 如何在控制檯應用程序中執行WCF主機?
- 9. 如何在Jquery中使用時區格式化日期時間?
- 10. 如何定期執行程序(到期日期和時間)?
- 11. Flink streaming:如何控制執行時間
- 12. 如何控制執行時間C
- 13. 控制檯應用程序以串行方式執行
- 14. 在控制檯應用程序運行期間的進度條
- 15. 如何控制NHibernate的日期時間格式?
- 16. SWT應用程序的本地化日期時間控制
- 17. 導出或執行控制檯應用程序窗體項目
- 18. 日期時間格式時,應用程序作爲Windows服務
- 19. Kohana v3應用程序執行時間
- 20. 如何在應用程序執行期間覆蓋logging.properties?
- 21. Java - 執行控制檯應用程序時的NetBeans參數
- 22. 如何製作可執行的metro樣式的應用程序?
- 23. 如何在應用程序中獲取android系統日期和時間格式
- 24. 如何在邏輯應用程序中設置日期時間格式
- 25. 如何控制外部可執行應用程序?
- 26. 如何更改SharePoint日期時間控制格式
- 27. 如何導出或執行控制檯應用程序窗體項目
- 28. asp.net中的日期格式與控制檯應用程序中的日期格式
- 29. Metro(Windows應用商店應用程序)XAML中的日期時間格式
- 30. 如何獲得symfony2應用程序的執行時間?
您是否曾經找到過解決方案? – 2011-01-28 01:44:03
對ToLocalTime方法投票贊成將時區序列化爲SOAP消息。保存了我的一天...更像一週。 – 2013-09-23 01:35:45