273 votes

Comment convertir une date en horodatage ?

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 ?

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.

296voto

WereWolf - The Alpha Points 49671

Divisez la chaîne en ses parties et fournissez-les directement au constructeur de Date :

Mise à jour :

var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = new Date( myDate[2], myDate[1] - 1, myDate[0]);
console.log(newDate.getTime());

0 votes

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]);

20 votes

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.

9 votes

Note : new Date(newDate).getTime() produira un timestamp en résolution milliseconde.

23voto

tracevipin Points 8987
var dtstr = "26-02-2012";
new Date(dtstr.split("-").reverse().join("-")).getTime();

11voto

AntoJs Points 5214

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.

0 votes

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.

0 votes

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.

2 votes

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.

6voto

deepakssn Points 476
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())));
}

4voto

T.J. Crowder Points 285826

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 .

0 votes

@benvds : Cool, merci. Bien que je trouve le commentaire "De plus, il n'est pas destructif pour le DOM". un peu étrange... Je suppose que ce qu'ils voulaient dire, c'est que ça ne change pas la Date (qui n'a rien à voir avec le DOM).

Prograide.com

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.

Powered by:

X