JsonResult кодирует дату и время в формате UTC ... как этого избежать? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть контроллер MVC, который вызывается через Ajax. Этот контроллер делает запрос к базе данных, возвращая дату (с 00:00:00 в качестве значения времени)

В случае запись, хранящаяся в базе данных SQL Server, имеет значение «2019-05-01 00: 00: 00.000».

Я выполняю инструкции этой структуры сущности:

        var periodos = db.Periodo.Where(p => p.PeriodoEliminadoEn == null && p.ClienteId == this.ClienteID);
        var listado = periodos.Select(p => new
        {
            PeriodoId = p.PeriodoId,
            PeriodoFecha = p.PeriodoFecha,
            PeriodoCreadoEn = p.PeriodoCreadoEn,
            PeriodoActualizadoEn = p.PeriodoActualizadoEn,
            PeriodoActivo = p.PeriodoActivo
        });

        GridRowObject grid = new GridRowObject(totalPages, currentPage, totalRecords, listado.ToList());
        return Json(grid, JsonRequestBehavior.AllowGet);

GridRowObject - это просто:

public class GridRowObject
{
    public int total { get; private set; }
    public int page { get; private set; }
    public int records { get; private set; }
    public IEnumerable rows { get; private set; }
    public object userdata { get; set; }

    public GridRowObject(int total, int page, int records, IEnumerable rows)
    {
        this.total = total;
        this.page = page;
        this.records = records;
        this.rows = rows;
    }

    public GridRowObject(int total, int page, int records, IEnumerable rows, object userdata)
        : this(total, page, records, rows)
    {
        this.userdata = userdata;
    }
}

Когда Ajax сделан, значение "PeriodoFecha" равно "" / Date (1556679600000) / "", как я видел в инструментах разработки Chrome.

Я использовал эту страницу, https://www.epochconverter.com/,, чтобы увидеть реальное значение даты, и я увидел, что это: 1 мая 2019 года 3:00:00 по Гринвичу и 30 декабря 2019 года 23:00:00 по местному времени.

Тот факт, что на странице, которую я разработал, показывает местную дату, что, очевидно, неверно.

Проблема из-за проблем с часовыми поясами в моей стране. Согласно правительству, часовой пояс был изменен до изменения в другие годы. Сервер не знает об этом изменении. Таким образом, для сервера часовой пояс по-прежнему GMT-3, однако реальный часовой пояс GMT-4. По этой причине на компьютерах всех посетителей указана дата 30 апреля, что явно неверно.

Как мне избавиться от часового пояса? Я ожидаю, что, если сервер сериализует дату и время, используя свой сериализатор Json, дату и время следует отправлять как есть, без предварительного преобразования в GMT.

И клиентский компьютер при использовании плагина jquery «moment» для преобразования этой даты в дату и время конвертируется без учета часового пояса.

Привет

Jaime

...