Десериализация JSON даты без часовых поясов

У меня есть проблема, которая разбивает мне голову со вчерашнего дня и нене знаю, как с этим справиться.

У меня есть поле даты в моей базе данных, которое содержит следующее значение:

Затем мое приложение получает значение и отправляет его в мою веб-форму. (значение все тот же :) это хорошо !!

На стороне клиента я поставил перерыв с предупреждением JavaScript, чтобы увидеть значение, которое приходит из JSON (значение все тот же :) это хорошо !!

Код на стороне клиента для предупреждения:

// transaction json model
var jsonTransaction = @(Html.Raw(Json.Encode(this.Model.Transaction))); 
alert(new Date(parseInt(jsonTransaction.Date.substr(6))));
Теперь, когда я возвращаю значение на сервер, это то, что я получаю

И, наконец, после десериализации JSON мое время не верно !! вместо 7-го дня его теперь 8-й день ???????

Это код для десериализации:

public JsonResult SaveBill(string jsonTransaction, string jsonTranDetails)
{
    _appState = this.AppState;
    JsonResult returnVal = returnVal = Json(
       new { Success = true }
    );

var transaction = JsonConvert.DeserializeObject(jsonTransaction, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });

Любая подсказка о том, как решить эту проблему с датами, я должен получить ту же дату, потому что я нене могу ничего изменить. Надеюсь, что кто-то может направить меня к решению.

Заранее спасибо.

 VAAA10 нояб. 2012 г., 20:28
Единственный способ получить ту же дату - это сделать на стороне сервера: JsonConvert.DeserializeObject <BillTransaction>(jsonTransaction, new JsonSerializerSettings () {NullValueHandling = NullValueHandling.Ignore, DateFormatHandling = DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Local}); Но не знаю, если использовать DateTimeZoneHandling.Local его нормально ??
 John Kurlak10 нояб. 2012 г., 19:49
Если вы используете Newtonsoft 'В JSON.NET эта проблема исчезнет. Новый материал для веб-API с ASP.NET MVC 4 использует тот же парсер.
 VAAA26 нояб. 2012 г., 19:51
Я просто установил UTC, но тогда полученная дата не совпадает. Я получаю + 1 день. :(
 Pointy10 нояб. 2012 г., 21:21
Я думаю, что это неправильноDateTimeZoneHandling = DateTimeZoneHandling.Local но я'Я не знаком с этим программным обеспечением. Должна быть опция, чтобы установить это в UTC, поэтому яЯ попробую это.
 John Kurlak10 нояб. 2012 г., 19:50
Это должно обсудить все, что вам нужно знать:hanselman.com/blog/...
 Pointy10 нояб. 2012 г., 21:18
Это зависит от вашего кода десериализации на стороне сервера. Эта кодировка JSON в виде строки -"Date(1341706634733)" - интерпретируется чем-то в вашем серверном коде. Эта временная метка предназначена для вашей правильной даты. Там'Нет стандартного способа кодировать даты в JSON, так что это зависит от того, как этоJsonConvert код работает. Этопоявляется что код десериализатора интерпретирует метку времени как относящуюся к вашему местному времени, а не как метку времени UTC.

Ответы на вопрос(1)

когда он анализирует дату как currentdate = new Date (123232), поэтому, когда вы отправляете дату клиенту, преобразуйте ее в дату ISO, например, убедитесь, что дата указана в UTC, прежде чем конвертировать ее в сильную.

return String.Format("{0:yyyy-MM-ddTHH:mm:ss.fffZ}", dt); 

bty Я уже создал JSON Converted, чтобы переопределить любую сериализацию даты на стороне клиента, чтобы использовать вышеуказанную функцию.

Ваш ответ на вопрос