2017-08-25 15 views
0

コントローラへのAJAX呼び出しがあり、JSON.stringifyを使用してコントローラアクションにデータを送信しています。私の問題は、クライアント側のEDT(私の現地時間)がサーバー側のGMTに変換されている日付フィールドです。 EDTに残るために私が何をすべきか日付フィールド値がクライアント側からサーバー側に変更

これは私のコードです:

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 
{ 

} 

はなぜ食い違いがあり、どのようにそれを解決することができますか?

EDIT 1: .toISOstringを使用しても動作しません。

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

あなたはUTCの日付を使用して適切な変換を行うことはできませんか? –

+0

新しい日付(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

関連する問題