2011-08-31 75 views
1

我必須要將日期從瀏覽器傳輸到服務器。如何正確地將我的日期從瀏覽器傳輸到服務器

1)第一種情況是通過對ASMX服務(.NET 4.0)的jQuery/JSON調用。

2)第二種情況是,頁面首先將包含日期的對象序列化到隱藏字段,然後將頁面發佈到服務器。隱藏字段被解析(使用.NET內置的JavaScriptSerializer)。

因此,假設用戶輸入日期「2011-08-31」。在第一種情況下,服務器上的結果日期爲2011-08-30 22:00(因爲我目前處於+2時區)。但是,在第二種情況下,服務器上的結果日期爲2011-08-31(正確)。

這兩種情況在瀏覽器上使用相同的JSON序列化程序。 ?

但我不明白爲什麼這兩個都產生於服務器:-( 不同的日期有誰知道

回答

1

您需要使用UTC日期,看看這些資源:

get UTC Date in javascript

converting UTC with C#

+0

謝謝!問題是,因爲我使用ASMX,我想這個轉換是自動進行的 - 否則我需要轉換每個日期serverside。 d來改變JSON字符串,這樣我才能真正得到「2011-08-31T00:00:00Z」(可以通過.NET服務器端正確解釋)。但是,我仍然有上述兩種情況的差異。 – Sten

+0

你打算在服務器上使用這個日期做什麼?你不堅持它的某種數據存儲?在將日期傳遞給Web服務調用之前,您是否嘗試過使用JavaScript函數Date.getUTCDate()? –

+0

日期將存儲在SQL Server數據庫中。列數據類型是舊時間DateTime(不包括任何時區信息,afaik)。我一直在嘗試各種方法來對日期進行序列化/字符串化。目前,我使用ISO8601格式(「2009-02-15T00:00:00Z」)對它們進行了字符串化 - 並假定用戶輸入YYYY-MM-DD。 – Sten

相關問題