Mam problem, który łamie mi głowę od wczoraj i nie wiem, jak sobie z nim poradzić.Deseryzacja terminów JSON bez strefy czasowej
- Mam pole daty w mojej bazy danych, która zawiera następujące wartości:
- Wtedy mój wniosek uzyskać wartość i przesyła temu do mojego formularza internetowego. (wartość wciąż taka sama :) to w porządku !!
- Na stronie klienta kładę przerwę z javascript alertu, aby zobaczyć wartość, która nadchodzi z JSON (wartość ciągle to samo :) to jest to w porządku !!
Kod na stronie klienta dla wpisu to:
// transaction json model
var jsonTransaction = @(Html.Raw(Json.Encode(this.Model.Transaction)));
alert(new Date(parseInt(jsonTransaction.Date.substr(6))));
- Teraz kiedy odesłać wartości do serwera jest to, co mam
- I wreszcie po deserializacji JSON mój czas jest nieprawidłowy! zamiast Dnia 7 jest teraz Dzień 8 ???????
Jest to kod dla deserializacji:
public JsonResult SaveBill(string jsonTransaction, string jsonTranDetails)
{
_appState = this.AppState;
JsonResult returnVal = returnVal = Json(
new { Success = true }
);
var transaction = JsonConvert.DeserializeObject<BillTransaction>(jsonTransaction, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });
Każda wskazówka, w jaki sposób rozwiązać ten problem z datami, powinienem dostać tę samą datę, bo nic nie zmieni . Mam nadzieję, że ktoś poprowadzi mnie do rozwiązania.
Z góry dziękuję.
skrypt
Jeśli korzystasz z JSON.NET Newtonsoft, ten problem zniknie. Nowy interfejs Web API z ASP.NET MVC 4 używa tego samego parsera. –
Powinno to omówić wszystko, co musisz wiedzieć: http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx –
Jedynym sposobem mogę dostać tę samą datę robi to po stronie serwera: JsonConvert.DeserializeObject (jsonTransaction nowe JsonSerializerSettings() {NullValueHandling = NullValueHandling.Ignore, DateFormatHandling = DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Local }); Ale nie wiem, czy za pomocą DateTimeZoneHandling.Local jest ok? –
VAAA