簡體   English   中英

將日期從JavaScript轉換為服務器端的問題

[英]Issue converting the date from JavaScript to Server side

我在客戶端有一個日期,我正在將該日期轉換為毫秒,並將毫秒傳遞給服務器端代碼,然后將其再次轉換為日期格式,但是問題是在此過程中我的日期更改了。 以下是我的情況

JavaScript日期:

    var myDate= Fri Apr 01 2011 05:00:00 GMT+0530 (India Standard Time) {}
    //Converted to milliseconds via this code (new Date(myDate)).getTime()
    Output: 1301700600000

現在,我通過ajax將上述字符串(1301700600000)傳遞到服務器端代碼。 下面是服務器端代碼。

private void Test(string myDate)
{
    long myDateMilliseconds=long.Parse(myDate);
    var myDate = new DateTime(1970, 1, 1) + new TimeSpan(myDateMilliseconds*10000);
    //Here the date becomes Date = {3/31/2011 12:00:00 AM}
}

即Fri Apr 01 2011 05:00:00 GMT + 0530不等於{3/31/2011 12:00:00 AM}注意日期和時間差。

我可以知道我過去的日期和在服務器上產生的日期之間有什么區別。

如何從毫秒創建TimeSapn? 致電TimeSpan.FromMilliseconds http://msdn.microsoft.com/en-us/library/system.timespan.frommilliseconds.aspx

注意:請考慮使用UTC版本的函數來獲取日期和時間值。 並閱讀有關時區的信息...

看起來您在這里失去了歲差。 為什么不簡單地傳遞Date字符串並在服務器上解析它。

嘗試使用

var d = new Date();
var utcMs = d.UTC();

在客戶端。 然后使用

var utcThen = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(clientUtcMs);

var localThen = utcThen.ToLocalTime();

更好的解決方案是計算UTC時間與客戶端本地時間之間的時差並將其發送到服務器。 將其舍入為半小時(時區之間的時間間隔是否更短?),您將獲得非常精確的信息。

暫無
暫無

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

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