[英]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.