J'essaie de convertir une chaîne au format jj-mm-aaaa en un objet de date en JavaScript en utilisant ce qui suit:
var from = $("#datepicker").val();
var to = $("#datepickertwo").val();
var f = new Date(from);
var t = new Date(to);
("#datepicker").val()
contient une date au format jj-mm-aaaa. Lorsque je fais ce qui suit, j'obtiens "Date invalide":
alert(f);
Est-ce à cause du symbole «-»? Comment puis-je surmonter cela?
javascript
date
user559142
la source
la source
Réponses:
Fractionner sur "-"
Analysez la chaîne dans les parties dont vous avez besoin:
Utiliser regex
Pourquoi ne pas utiliser regex?
Parce que vous savez que vous travaillerez sur une chaîne composée de trois parties, séparées par des tirets.
Cependant, si vous recherchiez cette même chaîne dans une autre chaîne, regex serait la voie à suivre.
Réutilisation
Parce que vous faites cela plus d'une fois dans votre exemple de code, et peut-être ailleurs dans votre base de code, enveloppez-le dans une fonction:
Utilisation comme:
Ou si jQuery ne vous dérange pas dans votre fonction:
Utilisation comme:
JavaScript moderne
Si vous pouvez utiliser un JS plus moderne, la déstructuration des tableaux est également une bonne idée:
la source
exemple d'expression régulière:
la source
/
est délimiteur et une année composée de 2 chiffres (ou tout nombre supérieur à 1):replace( /(\d{2})[-/](\d{2})[-/](\d+)/, "$2/$1/$3")
new Date( "23. 2. 15".replace( /(\d+)[^d]+(\d+)[^d]+(\d+)/, "$2/$1/$3") );
en.wikipedia.org/wiki/Date_format_by_countryUne autre possibilité:
Faites correspondre les chiffres et réorganisez-les
la source
var date = new Date(numbers[2], numbers[1]-1, numbers[0]);
En utilisant l' exemple de moment.js :
la source
la source
$.datepicker.parseDate("dd-mm-yy", from);
pour analyser correctement une date comme24-01-2017
, consultez la documentation de datepickerVous pouvez également écrire une date entre les parenthèses de l'
Date()
objet, comme ceci:la source
Utilisez ce format:
myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00
la source
parseDate
fonction? Est-ce une fonction javascript native?'2011-01-03'
et l'heure UTC sur00:00:00
. Donc, si le fuseau horaire de l'utilisateur est inférieur à UTC, ce sera en fait la veille.Dans mon cas
Résultat: lun 02 novembre 2015 04:40:13 GMT + 0100 (CET) puis j'utilise .getTime () pour travailler avec des millisecondes
la source
La réponse acceptée a un peu un bogue
Considérez si le datepicker contient "77-78-7980" qui n'est évidemment pas une date valide. Cela entraînerait:
Ce n'est probablement pas le résultat souhaité.
La raison en est expliquée sur le site MDN :
Une meilleure façon de résoudre le problème est:
Cela vous donne la possibilité de gérer une entrée invalide.
Par exemple:
la source
Vous pouvez utiliser une bibliothèque externe pour vous aider.
http://www.mattkruse.com/javascript/date/source.html
Voir aussi ceci: Analyser la chaîne DateTime en JavaScript
la source
Jetez un œil à Datejs pour tous ces petits problèmes liés aux dates. Vous pouvez également résoudre ce problème avec la fonction parseDate
la source
Vous pouvez utiliser une expression régulière.
la source
aussi simple que cela, transmettez simplement votre date à js Date Object
la source
new Date('30/12/2018').toLocaleDateString()
?? Cela renvoie une date invalide