Moment.js et à l'Époque Unix Conversion
J'ai un service web retournant un jour que la chaîne suivante:
/Date(1377907200000)/
- Je utiliser MomentJS d'analyser ce à un moment
objet.
moment("/Date(1377907200000)/")
=> Fri Aug 30 2013 20:00:00 GMT-0400
Tous c'est très bien. Mais quand je l'appelle unix()
sur l'objet que je suis, compte tenu de la valeur 1377907200
. Ceci, cependant, correspond à Fri Jan 16 1970 17:45:07 GMT-0500
. J'ai pu il suffit de multiplier la valeur retournée par unix()
mais qui semble bâclée pour moi. Je soupçonne que ce que je fais en appelant unix()
n'est pas exactement ce que je pense c'est. Ai-je besoin de spécifier un type de format lors de l'appel de unix()
? Ce qui me manque ici?
JSFidle montrant la conversion à l'instant et puis retour.
moment(1377907200000)
l'amende juste. Curieux de savoir pourquoi le service web renvoie la date en tant que tel.Nous utilisons un service web qui renvoie aussi bien-c'est parce que le consommateur cible de l'API est généralement de JavaScript, qui ne "de l'Époque en millisecondes" au lieu de secondes. Il est ciblé vers les plus susceptibles de consommation.
OriginalL'auteur Robert Kaucher | 2013-08-02
Vous devez vous connecter pour publier un commentaire.
La réponse fournie par meagar est correct, strictement JavaScript /Unix perspective temporelle. Toutefois, si vous il suffit de multiplier par 1000, vous perdrez tous les sous-deuxième précision qui pourrait avoir existé dans vos données.
Moment.js offre deux méthodes différentes, comme décrit dans les docs.
.unix()
retourne la valeur en secondes. Il est effectivement en divisant par 1000 et la troncature de toutes les décimales. Vous souhaitez utiliser le.valueOf()
méthode qui retourne le millisecondes sans modification.Oh, en fait, je vois que donne exactement ce que j'attendais. Je préfère ne pas modifier la valeur de toute manière donc votre réponse, en fait, c'est l'idéal.
Désolé, meagar..
désolé, mais ce que l'objet n'
.valueOf()
me demande?C'est une méthode à n'importe quel
moment
objet, commemoment().valueOf()
OriginalL'auteur Matt Johnson
En JavaScript terre, lorsque vous convertissez un
Date
à un nombre entier, vous obtenez un certain nombre de millisecondes depuis l'époque unix. Unix traditionnel est le nombre de secondes depuis l'époque. En multipliant par 1000 est la bonne option.Ou tout simplement
moment("/Date(1377907200000)/").toDate().getTime()
OriginalL'auteur meagar