2017-08-25 87 views
0

我有一個AJAX調用控制器,我使用JSON.stringify將數據發送到控制器操作。我的問題是客戶端上的日期字段是EDT(我的本地時間)正在服務器端轉換爲GMT。我應該做些什麼讓它留在美國東部時間。日期字段值從客戶端更改爲服務器端

這是我的代碼:

var EndDate= new Date($('#TBEndDateTime').val().trim()); //EndDate= Sat Aug 26 2017 12:54:00 GMT-0400 (Eastern Daylight Time) (Console value while debugging) 

var objEnd = JSON.stringify({ 
    EndDate: EndDate 
}) 

$.ajax({ 
    type: "POST", 
    url: "/Close/EndFunction", 
    contentType: 'application/json', 
    dataType: "json", 
    data: objEnd, 
    cache: false, 
    success: function (result) { 

    } 
}); 

和服務器端

public JsonResult EndFunction(FunctionEnd endFunction) //EndDate 2017-08-26T16:54:00.000Z 
{ 

} 

爲什麼會出現差異,以及如何解套?

編輯1: 使用.toISOstring也不起作用。

var EndOn = new Date($('#TBEndDateTime').val().trim()).toISOString(); //EndDate 2017-08-26T16:54:00.000Z 
+1

難道你不能只使用UTC的日期,然後進行適當的轉換? –

+0

new Date(val).toISOString()可能會有所幫助。 –

+0

@ axel.michel不是ISOstring()再次將它轉換爲GMT嗎? – Testing123

回答

1

你需要做的是避免從操縱代碼中的字符串化。這是@ axel.michel指出的ISOstring()將幫助你。你也可以使用getTimezoneOffset()來獲得正確的時區。

var EndDate= new Date($('#TBEndDateTime').val().trim()); 
EndDate= new Date(EndDate.getTime() - (EndDate.getTimezoneOffset() * 60000)).toISOString(); 
+0

這做到了! – Testing123

相關問題