Je veux convertir une date en timestamp, mon entrée est la suivante 26-02-2012
. J'ai utilisé
new Date(myDate).getTime();
Il est écrit NaN Quelqu'un peut-il me dire comment le convertir ?
Je veux convertir une date en timestamp, mon entrée est la suivante 26-02-2012
. J'ai utilisé
new Date(myDate).getTime();
Il est écrit NaN Quelqu'un peut-il me dire comment le convertir ?
Malheureusement, cette méthode ne fonctionne pas dans Safari5, car elle renvoie les résultats suivants NaN
. Dans Safari, vous devez utiliser l'autre constructeur possible. new Date(year, month, day);
concernant cet exemple : new Date(myDate[2], myDate[1], myDate[0]);
Au lieu de convertir la chaîne de date du format "européen" au format "américain", il est préférable de la convertir au format ISO 8601 ( YYYY-MM-DD
), qui est garantie d'être comprise par Date()
et est, en général, le format le plus interopérable pour les chaînes de dates.
Il vous suffit d'inverser le chiffre de votre date et de modifier -
con ,
:
new Date(2012,01,26).getTime(); // 02 becomes 01 because getMonth() method returns the month (from 0 to 11)
Dans votre cas :
var myDate="26-02-2012";
myDate=myDate.split("-");
new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10) - 1 , parseInt(myDate[0]), 10).getTime();
P.S. La locale britannique n'a pas d'importance ici.
Ce format de date n'est pas non plus valide et ne fonctionnera pas de manière fiable sur tous les navigateurs et dans toutes les langues (ce n'est pas le cas, par exemple, pour moi dans Chrome avec la langue britannique). Si vous devez suggérer un format, proposez-en un qui est documenté pour fonctionner.
J'obtiens l'exemple de developer.mozilla.org/fr/JavaScript/Référence/Global_Objects/ . J'ai juste oublié de ranger la ficelle. Maintenant ça marche.
Bon, au moins maintenant le code ci-dessus n'utilise pas un format de date invalide -- il donne simplement une mauvaise date, pour deux raisons distinctes. Ci-dessus, vous avez défini la date du 2 mars 2014 (l'ordre des champs est erroné). Si les champs étaient dans le bon ordre, vous auriez défini la date suivante Mars 26 décembre 2012 (les valeurs des mois commencent à zéro). Mais comme le PO a une chaîne de caractères, et non une série de chiffres, ce n'est pas très utile, même si vous avez résolu ces problèmes.
function getTimeStamp() {
var now = new Date();
return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
+ ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
.getSeconds()) : (now.getSeconds())));
}
Votre chaîne de caractères n'est pas dans un format que l'outil Date
L'objet est spécifié pour traiter . Vous devrez l'analyser vous-même, en utilisant une bibliothèque d'analyse des dates telle que MomentJS ou le plus ancien (et qui n'est pas actuellement maintenu, pour autant que je sache) DateJS ou le masser dans le bon format (par ex, 2012-02-29
) avant de demander Date
pour l'analyser.
Pourquoi vous obtenez NaN
: Quand vous demandez new Date(...)
pour traiter une chaîne de caractères non valide, il renvoie un Date
qui est défini comme une date non valide ( new Date("29-02-2012").toString()
renvoie à "Invalid date"
). Appeler getTime()
sur un objet date dans cet état retourne NaN
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Duplicata possible de stackoverflow.com/questions/9343971/
0 votes
Vous voudrez peut-être jeter un coup d'œil à la bibliothèque date.js : datejs.com
1 votes
Avez-vous utilisé
Date(myDate).getTime()
(ce que vous avez marqué comme étant du code), ou le mot "nouveau" qui le précède est-il censé faire partie du code ? Plus vous ferez d'efforts, meilleures seront les réponses que vous obtiendrez.0 votes
@rsbarro : Sauf qu'il ne semble plus être maintenu (et il y a des bugs en suspens). MomentJS semble assez bon, cependant.
0 votes
@T.J.Crowder J'ai utilisé date.js et il a fonctionné pour ce dont j'avais besoin, mais vous avez raison, il n'a pas été activement travaillé depuis un certain temps. Je vais vérifier momentjs. Merci !
0 votes
@rsbarro : C'est celui (un bug d'analyse) qui m'a mordu : jsbin.com/inudib La version utilisée sur la page d'accueil de datejs.com est différente de la dernière "version" et n'a pas ce problème (mais en a d'autres que la dernière "version" n'a pas).