2012-01-19 22 views
2

我並不期待描述這個問題,直到我發現了另一個論壇網站完全相同的問題,我需要回答(但沒有答案。)因此,與信貸this guy這裏是我的問題...如何獲取.NET WinForms組件以使用SET時區而不是客戶端時區?

我們有一個大型的Windows.Net應用程序(winform可執行文件),其中 安裝在客戶端的桌面上。此應用程序在不同時區的服務器上調用web 服務。幾乎所有的日期 導向部件檢測的時區差異,是「日期」 不會自動 調整日期時間值,這在大多數應用中,但 導致與會計相關的應用程序的問題一般需要(通過SQL 查詢生成的數據集返回) 「日期時間」爲導向。我們只對「日期」部分感興趣。 但是,格林威治標準時間1/1/2003的日期會自動轉換爲客戶端上的 12/31/2002 11:00 GMT-6。我們希望簡單地通過使 客戶端可執行文件「假」時區,而不是全部通過 代碼並提取UniversalTime以回到1/1/2003來獲取 可視目的與服務器的 相同的時區。

問題:我們能否以編程方式爲當前的 正在運行的實例設置TimeZone,而不是全局設置?

我真的沒有太多補充,因爲這是我們的問題。在我們的例子中,我們有ActiveReports將遠程SQL數據提取到數據集中,然後將報告綁定到數據集。因此,例如,生日是錯誤的,因爲我們正在爲他們存儲日期,而西部時區的日期減去X小時?所以生日是減去1。

有什麼想法?

謝謝!

賽斯

+0

您正在使用什麼版本的.NET的? .NET2中有關於System.DateTime和時區(System.DateTime.Kind被添加)的一些更改。 假設它是DateTime,System.DateTime.Kind的值是什麼? 數據庫中的數據類型是什麼(例如sql server有幾個選項)? 您是否正在客戶端上運行查詢(並將其放入System.Data.DataSet中)或者您是否只是對ActiveReports進行查詢? 客戶端上的數據類型是什麼? System.DateTime或System.DateTimeOffset? –

回答

-1

,我們解決這個問題是序列化的日期字符串表示的方式。

字符串日期的屬性實現執行與實際日期屬性的相應轉換。

例如:

[NonSerialized] 
    public DateTime MyDate { get; set; } 

    [System.Xml.Serialization.XmlAttribute("MyDate")] 
    public string MyDateString 
    { 
     get 
     { 
      if (MyDate.Equals(DateTime.MinValue)) 
      { 
       return string.Empty; 
      } 
      else 
      { 
       return MyDate.ToShortDateString(); 
      } 
     } 
     set 
     { 
      DateTime dtTemp = DateTime.MinValue; 
      if (DateTime.TryParse(value, out dtTemp)) 
      { 
       MyDate = dtTemp; 
      } 
      else 
      { 
       MyDate = DateTime.MinValue; 
      } 
     } 
    } 
+0

非常感謝您的回覆。我並不懷疑我將不得不重新設計我們的應用程序來支持這一點。我在這裏錯過了什麼? –

相關問題