2017-08-25 9 views
0

Ich habe einen AJAX-Aufruf an den Controller und ich verwende JSON.stringify, um die Daten an die Controller-Aktion zu senden. Mein Problem ist das Datumsfeld, das auf der Client-Seite EDT (meine lokale Zeit) ist, wird in GMT auf der Serverseite konvertiert. Gibt es etwas, das ich tun sollte, damit es im EDT bleibt?Datumsfeldwert wechselt von Clientseite zu Serverseite

Dies ist mein Code:

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) { 

    } 
}); 

Und auf der Serverseite

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

} 

Warum gibt es eine Diskrepanz und wie sie gelöst werden?

EDIT 1: Die Verwendung von .toISoString funktioniert auch nicht.

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

Können Sie nicht einfach die Daten in UTC verwenden und dann die richtigen Konvertierungen vornehmen? –

+0

new Date (val) .toISOString() könnte hilfreich sein. –

+0

@ axel.michel Konvertiert ISOstring() nicht wieder in GMT? – Testing123

Antwort

1

Was Sie tun müssen, ist zu vermeiden, stringify von der Manipulation Ihres Codes. Hier hilft Ihnen ISOstring() als @ axel.michel. Sie können auch die getTimezoneOffset() verwenden, um die Zeitzone richtig zu bekommen.

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

Das hat den Trick gemacht !! – Testing123

Verwandte Themen