Probablement une réponse facile à cela, mais je n'arrive pas à trouver le moyen d'obtenir un moment.js pour renvoyer une date heure UTC en millisecondes. Voici ce que je fais:
var date = $("#txt-date").val(),
expires = moment.utc(date);
Une idée de ce que je fais mal?
Ceci se trouve dans la documentation . Avec une bibliothèque comme un moment, je vous exhorte à lire l'intégralité de la documentation. C'est vraiment important.
En supposant que le texte saisi soit entré en fonction de l'heure locale de l'utilisateur:
var expires = moment(date).valueOf();
Si l'utilisateur est invité à entrer une date/heure UTC, alors:
var expires = moment.utc(date).valueOf();
J'utilise cette méthode et fonctionne. ValueOf ne fonctionne pas pour moi.
moment.utc(yourDate).format()
À partir de: moment.js version 2.24.0
supposons que vous ayez une entrée de date locale, c'est la bonne manière pour convertir votre dateTime ou Time entrée en UTC:
var utcStart = new moment("09:00", "HH:mm").utc();
ou si vous spécifiez une date
var utcStart = new moment("2019-06-24T09:00", "YYYY-MM-DDTHH:mm").utc();
Comme vous pouvez le constater, le résultat obtenu sera renvoyé en UTC:
//You can call the format() that will return your UTC date in a string
utcStart.format();
//Result : 2019-06-24T13:00:00
Mais si vous faites comme ci-dessous, il ne le fera pas convertir en UTC:
var myTime = new moment.utc("09:00", "HH:mm");
Vous définissez uniquement votre entrée sur utc time, c'est comme si vous indiquez que myTime est en UTC, .... le résultat sera 9:00
moment.utc(date).format(...);
est la voie à suivre, depuis
moment().utc(date).format(...);
se comporte bizarre ...
Si tout échoue, il suffit de réinitialiser avec un inverse de votre décalage local.
var timestamp = new Date();
var inverseOffset = moment(timestamp).utcOffset() * -1;
timestamp = moment().utcOffset( inverseOffset );
timestamp.toISOString(); // This should give you the accurate UTC equivalent.
ici, je passe l'objet de date et le convertis en heure 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);
Vous n'avez pas besoin de quelque chose pour comparer et ensuite récupérer les millisecondes?
Par exemple:
let enteredDate = $("#txt-date").val(); // get the date entered in the input
let expires = moment.utc(enteredDate); // convert it into UTC
Avec cela, vous avez la date d'expiration en UTC . Maintenant, vous pouvez obtenir la date "actuelle" en UTC et comparer:
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();