Moment.js разрешить смещение часового пояса - PullRequest
0 голосов
/ 18 октября 2018

Я работаю в интерфейсе Angular 6 и получаю от другой системной отметки времени, которые не имеют часовых поясов (C # backend, DateTime).Я подозреваю, что javascript автоматически добавляет местный часовой пояс к объектам Date.

Пример:

Получение из бэкэнда: 2018-10-15T07:53:00.000Z

При ведении журнала консоли: console.log(timestamp) // Mon Oct 15 2018 09:53:00 GMT+0200

Я использую moment.js и уже попробовал moment.utc() и moment(DATE).utc().Но он по-прежнему добавляет местный часовой пояс, особенно потому, что мне нужно преобразовать объекты моментов обратно в тип Date с помощью .toDate().

Как я могу разрешить разницу часовых поясов и получить обратнодата для работы или такая же структура, как получено?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Ваш ввод в формате UTC и будет проанализирован очень хорошо.Даты Javascript не имеют понятия о часовом поясе!Местный часовой пояс применяется статическими методами для сериализации (Date.toString(), Date.toDateString() и т. Д.) (Console.log (Date) использует Date.toString().)

Использовать Date.toLocaleString([],{timeZone:"UTC"}).При форсировании UTC на выходе вы увидите то же время, что и на входе.Гораздо больше деталей: здесь : -)

Здесь работает:

console.log(new Date('2018-10-15T07:53:00.000Z').toLocaleString([],{timeZone:'UTC'}))
0 голосов
/ 18 октября 2018

попробуйте отформатировать использование по желанию.

let str = '2018-10-15T07:53:00.000Z';
let moment = moment(str).utcOffset(str)
console.log(moment.format('DD/MM/YYYY HH:mm'))
<script src="https://momentjs.com/downloads/moment.js"></script>

Второй фрагмент (для использования объекта даты из строки)

let str = '2018-10-15T07:53:00.000Z';
let moment = moment(str).utcOffset(str);
console.log(moment.toDate())
<script src="https://momentjs.com/downloads/moment.js"></script>
...