Дата изменилась на местное время при передаче с использованием JSON - PullRequest
0 голосов
/ 01 сентября 2010

У меня есть страница, которая отображает данные из объекта.Я загружаю объектную серверную часть и передаю результаты через AJAX-вызов с помощью json.Существует свойство даты, которое является частью объекта.По какой-то причине дата меняется.Похоже, что он пытается учесть часовой пояс, в котором я нахожусь, и вычитать 4 часа от даты (я нахожусь в EST, -4 отличается от GMT).

Когда я нажимаю «Показать»Кнопка для сообщения, он делает AJAX-вызов для загрузки данных для этого сообщения, а затем отображает его.

Вот мой код JavaScript:

function onBtnDisplayClicked(id)
{
    $.ajax({
        type: "POST",
        url: "<%= Url.Action("GetMessage") %>?id=" + id.toString(),
        success: function(data) { bindItem(data); },
        dataType: "json",
        contentType: "application/json; charset=utf-8"
    });
}


function bindItem(data) 
{
    $("#MessageID").val(data.MessageID);

    //Create a Date object from JSON date format - ex: (1230807660000-4000)
    var messageDate = new Date(parseInt(data.MessageDate.replace(/\/Date\((\d+)\)\//, '$1')));

    //Format date using DateFormat plugin (http://jacwright.com/projects/javascript/date_format)
    $("#txtMessageDate").val(messageDate.format('m/d/Y H:i'));
}

А вот мой код на стороне сервера:

public JsonResult GetMessage(int id)
{
    Message msg = new Message();
    msg.LoadByPrimaryKey(id);

    var data = new
    {
        MessageID = msg.MessageID.Value,
        MessageDate = msg.MessageDate.Value
    };

    return new JsonResult() { Data = data };
}

Это будет работать правильно в моей локальной среде, но не в моей производственной среде.В моем локальном окружении время сервера установлено на EST (14:00).На производстве время сервера установлено на GMT (18:00).

Так что, если я пытаюсь отобразить «09/01/2010 09:00 AM», оно будет правильно отображаться на моем локальномокружающей среды, но на производстве отображается как «01.09.2010 05:00 AM».Я не уверен, почему он это делает.

1 Ответ

0 голосов
/ 01 сентября 2010

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

Я не совсем уверенкак бы вы это сделали, но вам нужно переопределить часовой пояс, используемый при форматировании строки при представлении даты в пользовательском интерфейсе.Если у вас есть доступ к коду в этом плагине DateTime, то я подозреваю, что это место для решения проблемы.

Извините, это не практичный ответ;Я понимаю только теорию, так как в настоящее время у меня практически нет опыта работы с JSON / AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...