1

特に日付に関しては、ノックアウトを ASP.NET Web API で動作させるために戦っています。この質問と他の同様の質問を見てきましたが、与えられた解決策が気に入りません。

いくつかの日付を含むオブジェクトがあります。Web Api コントローラーから返すと、次のようにシリアル化されます。

{
    "AdjustmentId": "6b8bc63f-de50-4feb-b0e2-a10800cbc3c3",
    "PortfolioCode": 2461,
    "Description": "",
    "StartDate": "2012-11-13T00:00:00+02:00",
    "EndDate": "2012-11-13T00:00:00+02:00"
}

ko.toJSON を使用してノックアウトからまったく同じ ViewModel を返すと、次のようになります。

{
    "AdjustmentId": "6b8bc63f-de50-4feb-b0e2-a10800cbc3c3",
    "PortfolioCode": 2461,
    "Description": "",
    "StartDate": "2012-11-12T22:00:00Z",
    "EndDate": "2012-11-12T22:00:00Z"
}

問題は、日付がコントローラーで逆シリアル化されていないことです。オブジェクトはそこにありますが、日付は DateTime.Min に設定されています。また、日付が 13 日の午前 0 時から 12 日の午後 10 時になっていることもわかります。これは、タイムゾーンが変更されたためです。

誰でもこれについて私を助けることができますか? 現時点では、回避策として toISOString() を使用して日付を変換していますが、シリアル化で自動的に変換したいと考えています。

これについて何か助けていただければ幸いです

4

1 に答える 1

1

ここで起こりうることは、投稿された日付/時刻がサーバー側で逆シリアル化されるときに、「ローカル」ではなく「UTC」の種類になるということです。サーバー側で .ToLocalTime() を使用して現地時間に変換してみてください。

于 2012-11-14T12:14:57.993 に答える