Момент Js от времени UTC - PullRequest
0 голосов
/ 07 июня 2018

Я хочу рассчитать относительное время к времени UTC.Мое местное время +2.

Я пробовал много комбинаций ... Например,

const endDate = new Date("08 Jun 2018") // tomorrow's date, I am expecting the time is 00:00:00
const utcDateTime = new Date(moment.utc().format());
const format = 'YYYY-MM-DD HH:mm:ss';

console.log(moment(endDate).fromNow()) // example for Poland(+2) it is 12, but I want to UTC(0), so it is should be 14
console.log(moment(endDate).from(utcDateTime)) // the same
console.log(moment(endDate.toUTCString()).from(utcDateTime)) // the same
console.log(moment(moment(endDate).utc().format(format), format).fromNow()) // I do not why, but it is 10, not 14 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js
"></script>

И каждый раз, когда я получаю относительное время, которое соответствует моему местному времени.UTC должно быть на 2 часа больше.

Я не знаю, как мне это сделать ...

Кто-нибудь может мне помочь?

Спасибо!

РЕДАКТИРОВАТЬ

Основываясь на предложении @ 31piy, я пробовал что-то вроде этого.

const endDate = new Date("08 Jun 2018") // tomorrow's date, I am expecting the time is 00:00:00
const format = 'YYYY-MM-DD HH:mm:ss';

console.log(moment(endDate).from(moment(moment.utc().format(format), format)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js
"></script>

И это работает для меня, но ... Как я могу сделать это более ясно?Возможно ли это?

EDIT2

Это была моя ошибка ... Я передавал дату ("08 июня 2018"), которая была в часовом поясе UTC, конструктору Date, но я сделалне указывайте, что это UTC - поэтому на самом деле endDate должен быть равен "08 June 2018 02:00:00", а не "08 Jun 2018 00:00:00".Я исправил это и очень ясно moment(endDate).fromNow(true) работает для меня.

Спасибо, что помогли мне с этим!

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Это была моя ошибка ... Я передавал дату ("08 июня 2018"), которая была в часовом поясе UTC, в конструктор Date, но я не указал, что это UTC - так что на самом деле endDate должно быть равнодо "08 June 2018 02:00:00", а не "08 Jun 2018 00:00:00".Я исправил это и очень ясно moment(endDate).fromNow(true) работает для меня.

0 голосов
/ 08 июня 2018

Не используйте конструктор Date для анализа.Вы уже используете Момент, так что просто позвольте ему работать.

moment.utc("08 Jun 2018", "DD MMM YYYY").fromNow()
0 голосов
/ 07 июня 2018

То, что вы пытаетесь достичь, немного сложно.Вам нужно отформатировать время UTC без информации о часовом поясе, а затем снова проанализировать его, используя момент перед тем, как вызвать fromNow():

const format = 'YYYY-MM-DD HH:mm:ss';
console.log(moment(moment.utc().format(format), format).fromNow());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js
"></script>
...