web-dev-qa-db-fra.com

new Date (..). getTime () n'est pas égal à moment (..). valueOf () in momentJS?

new Date(..).getTime() doit renvoyer un horodatage en millisecondes. Selon la documentation de momentJS , l'expression moment(..).valueOf() devrait faire la même chose (retourne l'horodatage en millisecondes pour une date donnée)).

J'ai vérifié avec les données d'exemple suivantes:

var timeStampDate = new Date("2015-03-25").getTime(); //timestamp in milliseconds?
> 1427241600000
var timeStampMoment = moment("03-25-2015", "MMDDYYYY").valueOf(); //timestamp in milliseconds?
> 1427238000000

Comme vous pouvez le constater, les résultats ne sont pas les mêmes. 

Maintenant, je cherche une fonction dans momentJS qui me renvoie exactement les mêmes données que l'expression new Date(..).getTime().

15
thadeuszlay

Date constructeur doc :

Le fuseau horaire UTC est utilisé pour interpréter les arguments au format ISO 8601 qui ne contiennent pas d'informations de fuseau horaire

moment constructeur doc :

Sauf si vous spécifiez un décalage de fuseau horaire, l'analyse d'une chaîne créera une date dans le fuseau horaire actuel.

donc en spécifiant le fuseau horaire dans le constructeur du moment, on obtient le même comportement que Date:

var timeStampMoment = moment("03-25-2015 +0000", "MM-DD-YYYY Z").valueOf(); //> 1427241600000
28
R. Oosterholt

Lorsque vous transmettez la même valeur à Date et à l'instant (au moins dans Chrome, quelques années plus tard), vous obtenez la même valeur pour les deux valeurs.

new Date("2015-03-25").getTime()
1427241600000
moment("03-25-2015", "MMDDYYYY").valueOf()
1427259600000
new Date("03-25-2015").getTime()
1427259600000

Ce que vous avez frappé n’est qu’une estimation différente du format de date dans Date.parse

1
iabw