Следующий код развернут в Azure:
JavaScript:
var _dp;
$(function () {
kendo.culture("en-GB");
_dp = $("#modified").kendoDatePicker().data("kendoDatePicker");
});
function postData() {
var data = {
Modified: _dp.value()
};
$.ajax({
type: "POST",
data: JSON.stringify(data),
contentType: 'application/json',
url: "/location/edit",
success: function (response) {
log(response.modifedLocalDateTime);
log(response.modifiedLocalKind);
log(response.modifiedUtcDateTime);
log(response.modifiedUtcKind);
}
});
}
function log(msg) {
document.getElementById('divLog').innerHTML += "<br/>" + msg;
}
Мой html
<input type="text" id="modified" />
<a href="javascript:postData();">postData</a>
<div id="divLog"></div>
Мой контроллер mvc
[HttpPost]
public ActionResult Edit(LocationViewModel item)
{
var modifiedUtc = item.Modified;
var modifiedLocal = modifiedUtc.ToLocalTime();
return Json(new
{
modifedLocalDateTime = modifiedLocal.ToString(),
modifiedLocalKind = modifiedLocal.Kind.ToString(),
modifiedUtcDateTime = modifiedUtc.ToString(),
modifiedUtcKind = modifiedUtc.Kind.ToString()
});
}
public class LocationViewModel
{
public int LocationId { get; set; }
public string Name { get; set; }
public DateTime Modified { get; set; }
}
Также стоит отметить, что в моем webapi.config есть:
config.Formatters.JsonFormatter.SerializerSettings.DateFormatHandling = DateFormatHandling.IsoDateFormat;
config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
Теперь я выбираю дату, используя средство выбора даты кендо, скажем, 29 мая 2015 года, и нажимаю на данные публикации. Я получаю ответ на 1 час раньше, чем я просил. Не совсем то, что я ожидал. Мой регион — Великобритания, поэтому у нас британское летнее время, то есть UTC + 1.
Поэтому я ожидал, что даты будут переданы как UTC - глядя на скрипача, это выглядит так:
Таким образом, веб-API должен получать дату в формате utc. Однако, глядя на вывод, веб-API получает 28 мая 2015 г., 23:00, а для свойства kind установлено значение local? Почему для свойства kind установлено значение utc - чего я и ожидал), так как в моем webapi.config я указал UTC... Так почему же так?
В настоящее время я получаю это
Я хочу получить 29 мая 2015 года, а не 28 мая 2015 года в 23:00 в моем методе действия.
Как я могу это сделать?