2010-09-16 74 views
2

跨日期和時間轉移的最佳方式是什麼?我在客戶端/瀏覽器端使用GWT,在服務器上使用.NET C Sharp,我使用JSON作爲數據交換格式。我目前將所有日期和時間作爲.NET DateTime存儲在服務器上。現在我已經注意到,如果我使用GWT DatePicker或DateBox選擇一個日期並以毫秒(通過執行date.getTime())將服務器將該參數作爲DateTime發送給服務器,則可以看到一個小時偏移量由於BST。我有一些情況需要在用戶界面的不同框中輸入日期和時間,並且由於日程安排,時間設置和正確的日期是至關重要的。跨語言/跨平臺日期和時間轉移

回答

3

交換日期和時間值的最佳方法是將它們序列化爲基於UTC的字符串,如:2010-09-18T18:37:11。問題是,日期和時間相關的操作往往是不正確的實施...

至於你的問題,我認爲它會在JSON時間的反序列化期間彈出,即.Net將這次處理爲本地(DateTimeKind.Local或DateTimeKind.Unspecified),從而轉換它。不知道如何處理它,蠻力將可能發送序列化的字符串像上面和手動反序列化這樣的:

DateTime date = DateTime.Parse(dateString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); 
+0

字符串是發送數據的好方法。有時令人討厭,但他們幾乎可以在任何事情上工作。 – BCS 2010-11-01 13:54:40

1

我推薦使用標準,如ISO 8601以字符串形式傳遞日期時間信息。在我的公司,以JSON對象編碼的日期時間信息幾乎總是以這種格式,例如, 「2015-10-12T18:41:11 + 01:00」。在所有使用不同編程語言(Obj-C,Java,C/C++)的客戶端中,可以正確分析和理解該字符串。