Разобрать строку даты и времени в Angular - PullRequest
0 голосов
/ 28 мая 2020

Я построил сервер Golang, который считывает поля DateTime на SQL Server, он возвращает мне такую ​​дату: «2020-05-28T11: 14: 26.227Z», но когда я пытаюсь выполнить синтаксический анализ в TypeScript \ Angular он возвращает мне это: «28-05-2020 13 : 14: 26: 227» выглядит так, как будто он добавляет 2 часа.

Может быть, неправильный часовой пояс? Как я могу установить правильный часовой пояс?

База данных и приложение angular находятся на моем компьютере (тот же часовой пояс)

1 Ответ

2 голосов
/ 28 мая 2020

Совместное использование DateTime между сервером и JavaScript является правильным PITA. Я хотел проигнорировать часовой пояс и не чувствовал необходимости во всей библиотеке, например Moment, поэтому я написал помощник по преобразованию для Angular следующим образом:

Преобразование дат, полученных с сервера, в JavaScript:

// Reverse the timezone offset (this might only work for timezones earlier than GMT - so test)
this.translateToClient = function (input) {
    if (!input) return null;
    let result = new Date(Date.parse(input));

    result.setMinutes(result.getMinutes() + result.getTimezoneOffset());

    return result;
};

Преобразование дат в JavaScript для отправки обратно на сервер:

// Send back UTC time instead of timezone time.
this.translateToServer = function (input) {
    if (!input) return null;

    return new Date(Date.UTC(
        input.getFullYear()
        , input.getMonth()
        , input.getDate()
        , input.getHours()
        , input.getMinutes()
        , input.getSeconds()
        , input.getMilliseconds()
    ));
};

Примечание. Некоторые серверные технологии (например, ASP. NET) также могут применяться автоматически смещение часового пояса, которое также должно быть правильно настроено.

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

DateTime.SpecifyKind(MyValue, DateTimeKind.Utc);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...