Date de création de Timestamp Unix de l'ignorer fuseau horaire
Pour un oData Reste, j'utilise Moment.js pour créer une date à partir d'un timestamp Unix, et je tiens à ignorer le fuseau horaire.
Ma date est "2013-12-24", qui est 1387839600 dans Unix secondes.
À l'aide de
moment("2013-12-24", "YYYY-MM-DD").toISOString()
résultats dans "2013-12-23T23:00:00.000 Z", depuis que je vis à GMT+1.
Par l'utilisation de
moment.utc("2013-12-24", "YYYY-MM-DD").toISOString()
- Je obtenir "2013-12-24T00:00:00.000 Z", qui est exactement ce que je veux. Je peux simplement supprimer Zulu "Z" à la fin.
Mais ma date réelle de la représentation est un timestamp Unix. Donc, si je ne
moment.utc(1387839600, "X").toISOString()
Je reçois toujours "2013-12-23T23:00:00.000 Z", mais je veux qu'il revienne "2013-12-24T00:00:00.000 Z".
Où est ma faute?
Merci pour votre aide!
À l'aide de moment.utc(moment("1387839600", "X").format("L"), "DD.MM.AAAA").toISOString() fonctionne, mais qui semble plutôt compliqué!?
Ou tout simplement
Merci @robertklep, je tiens à accepter votre commentaire que la réponse à ma question, mais malheureusement je ne peux pas faire la promotion de votre commentaire plein de réponse...
Ou tout simplement
moment(1387839600, 'X').format('YYYY-MM-DDT00:00:00.000')
?Merci @robertklep, je tiens à accepter votre commentaire que la réponse à ma question, mais malheureusement je ne peux pas faire la promotion de votre commentaire plein de réponse...
OriginalL'auteur Windwalker | 2013-12-20
Vous devez vous connecter pour publier un commentaire.
Timestamps Unix, que ce soit en secondes ou millisecondes, sont toujours en UTC. La valeur
1387839600
est en effet 2013-12-23 à 11:00 H UTC. Vous utilisez des sites comme celui-ci pour vérifier.Si vous voulez qu'il soit 2013-12-24 à minuit UTC, le timestamp serait
1387843200
.Donc moment est de se comporter correctement. Vous devez vous concentrer à la place sur votre API rest et assurez-vous qu'elle est correctement émettant UTC et non une valeur d'heure locale.
Aussi, si vous voulez juste la partie date, alors n'utilisez pas
.toISOString
. Au lieu de cela, utiliser.format
, tels que:OriginalL'auteur Matt Johnson
Vous pouvez 'faire' votre propre format. Toutes les chaînes qui doivent être copiés en est (pas d'interpolation) doivent être contenues dans des crochets.
Donc, dans votre situation, cela devrait fonctionner:
OriginalL'auteur robertklep
Après le réglage de la onChange fonctionnalités, comme les
<DateTimeField mode="date" inputFormat='MM-DD-YYYY' onChange= {this.onChange} />
La fonction onChange peut ressembler à ceci:
onChange: function(value) {
console.log({myDate: moment.utc(value, 'x').format('YYYY-MM-DDTHH:mm:ss.SSSZ')});
},
Il semble que le onChange de la valeur en tant que Unix ms timestamp (x) au lieu de timestamp Unix (X) dans le cas où une confusion.
Cela devrait afficher une chaîne de caractères comme
2015-07-15T15:02:00.000+00:00
OriginalL'auteur jenmbq
Ne pas utiliser
toISOString()
. Au lieu d'utiliser quelque chose comme ceci:OriginalL'auteur Laoyuan