JSON Дата отображается с часовым поясом, отличным от сохраненного на сервере - PullRequest
0 голосов
/ 08 октября 2019

У меня проблема с отображением дат в представлениях приложения, когда я размещаю сайт на сервере SmarterASP.net. По сути, при получении дат и отображении в представлениях часовой пояс изменяется автоматически, и я не настроил его - я не знаю, является ли он автоматическим из ASP.NET MVC, но я ничего не установил вообще. Например, вот некоторые даты, введенные в базу данных:

enter image description here

Чтобы извлечь конкретную запись, я использую JsonResult, который возвращает информацию, необходимую для этой записи:

[HttpPost]
public JsonResult Get(Guid? id)
{
    var model = db.Student.Find(id);

    return Json(new
    {
        model.Id,
        model.Name,
        model.CreatedDate
    }, JsonRequestBehavior.AllowGet);
}

В представлении вызывается запрос AJAX для отображения информации:

function getStudentInfo() {
    $.ajax({
        url: `@Url.Action("Get")`,
        type: "POST",
        dataType: "json",
        data: { id },
        success: function (result) {
            console.log(result.CreatedDate);
        }
    });
}

Таким образом, дата, представленная в консоли для первой записи первой цифры, равна: /Date(1570551060227)/

Кроме того, я использую функцию JavaScript для преобразования даты JSON в действительный формат:

function formatDataHoraJson(date, seconds) {
    if (!date)
        return "";
    const formattedDate = new Date(parseInt(date.substr(6)));
    const day = formattedDate.getDate();
    var month = formattedDate.getMonth();
    month += 1; 
    const year = formattedDate.getFullYear();

    const hour = formattedDate.getHours();
    const minute = formattedDate.getMinutes();
    const second = formattedDate.getSeconds();

    if (seconds)
        return pad(day, 2) + "/" + pad(month, 2) + "/" + pad(year, 4) + " - " + (pad(hour, 2) + ":" + pad(minute, 2) + ":" + pad(second, 2));
    else
        return pad(day, 2) + "/" + pad(month, 2) + "/" + pad(year, 4) + " - " + (pad(hour, 2) + ":" + pad(minute, 2));
}

Результат после вызова функции всегда отображается еще на 4 часачем дата в базе данных (2019-10-08 13:11:00:227)

ВАЖНО: Сервер, на котором размещено приложение, находится не в Бразилии. Однако часовой пояс даты, отображаемой на экране, соответствует бразильскому часовому поясу, хотя в базе данных сохраненная дата находится в часовом поясе, из которого размещено приложение. Сначала я хотел бы отобразить дату в том виде, в котором она хранится на сервере базы данных.

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