Подтвердить что ты не робот

Конвертировать дату в UTC с помощью moment.js

Вероятно и простой ответ на это, но я не могу найти способ получить moment.js, чтобы вернуть время даты UTC в миллисекундах. Вот что я делаю:

var date = $("#txt-date").val(),
    expires = moment.utc(date);

Любая идея, что я делаю неправильно?

4b9b3361

Ответ 1

Это найдено в документации. С такой библиотекой, как момент, я настоятельно рекомендую вам прочитать всю документацию. Это действительно важно.

Предполагая, что входной текст вводится с точки зрения времени пользователя:

 var expires = moment(date).valueOf();

Если пользователю дано указание ввести дату/время UTC, то:

 var expires = moment.utc(date).valueOf();

Ответ 2

Я использую этот метод и работает. ValueOf не работает для меня.

moment.utc(yourDate).format()

Ответ 3

По состоянию на: moment.js version 2.24.0

скажем, у вас есть локальный ввод даты, это правильный способ конвертировать ваш dateTime или время в UTC :

var utcStart = new moment("09:00", "HH:mm").utc();

или если вы укажете дату

var utcStart = new moment("2019-06-24T09:00", "YYYY-MM-DDTHH:mm").utc();

Как вы можете видеть, результат будет возвращен в UTC:

//You can call the format() that will return your UTC date in a string 
 utcStart.format(); 
//Result : 2019-06-24T13:00:00 

Но если вы сделаете это, как показано ниже, он не будет преобразован в UTC:

var myTime = new moment.utc("09:00", "HH:mm"); 

Вы только устанавливаете свой ввод на время utc, как будто вы упоминаете, что myTime находится в UTC,.... выходной будет 9:00

Ответ 4

moment.utc(date).format(...); 

- путь, так как

moment().utc(date).format(...);

ведет себя странно...

Ответ 5

Если все остальное не удается, просто повторно инициализируйте с помощью инверсии локального смещения.

var timestamp = new Date();
var inverseOffset = moment(timestamp).utcOffset() * -1;
timestamp = moment().utcOffset( inverseOffset  );

timestamp.toISOString(); // This should give you the accurate UTC equivalent.

Ответ 6

здесь я передаю объект даты и преобразую его в время UTC.

$.fn.convertTimeToUTC = function (convertTime) {
   if($(this).isObject(convertTime)) {
        return moment.tz(convertTime.format("Y-MM-DD HH:mm:ss"), moment.tz.guess()).utc().format("Y-MM-DD HH:mm:ss");
    }
};
// Returns if a value is an object
$.fn.isObject =  function(value) {
    return value && typeof value === 'object';
};


//you can call it as below
$(this).convertTimeToUTC(date);

Ответ 7

Разве вам не нужно что-то сравнивать, а затем извлекать миллисекунды?

Например:

let enteredDate = $("#txt-date").val(); // get the date entered in the input
let expires = moment.utc(enteredDate); // convert it into UTC

При этом у вас есть истекающая дата в UTC. Теперь вы можете получить дату "прямо сейчас" в UTC и сравнить:

var rightNowUTC = moment.utc(); // get this moment in UTC based on browser
let duration = moment.duration(rightNowUTC.diff(expires)); // get the diff
let remainingTimeInMls = duration.asMilliseconds();