web-dev-qa-db-fra.com

jquery / javascript convertit la chaîne de date en date

J'ai une chaîne de date "dimanche 28 février 2010" que je voudrais convertir en un objet de date js formaté @ MM/DD/YYYY mais je ne sais pas comment. Aucune suggestion?

32
sadmicrowave

Je prendrais date.js ou bien vous devrez rouler votre propre fonction de formatage.

22
Segfault

Si vous utilisez jQuery, vous pouvez utiliser la fonction parseDate de la bibliothèque d'interface utilisateur de datepicker pour convertir votre chaîne en une date:

var d = $.datepicker.parseDate("DD, MM dd, yy",  "Sunday, February 28, 2010");

puis suivez-la avec la méthode formatDate pour obtenir le format de chaîne que vous souhaitez

var datestrInNewFormat = $.datepicker.formatDate( "mm/dd/yy", d);

Si vous n'utilisez pas jQuery, bien sûr, ce n'est probablement pas le meilleur plan étant donné que vous auriez besoin du noyau jQuery ainsi que du module d'interface utilisateur de datepicker ... il vaut mieux suivre la suggestion de Segfault ci-dessus d'utiliser date.js.

HTH

99
Jono Wilkinson
var stringDate = "Sunday, February 28, 2010";

var months = ["January", "February", "March"]; // You add the rest  :-)

var m = /(\w+) (\d+), (\d+)/.exec(stringDate);

var date = new Date(+m[3], months.indexOf(m[1]), +m[2]);

La méthode indexOf sur les tableaux n'est prise en charge que sur les nouveaux navigateurs (c'est-à-dire pas IE). Vous devrez effectuer vous-même la recherche ou utiliser l'une des nombreuses bibliothèques offrant les mêmes fonctionnalités.

De plus, le code ne contient aucune vérification d'erreur qui devrait être ajoutée. (Chaîne ne correspondant pas à l'expression régulière, mois inexistants, etc.)

4
RoToRa

Si vous n'en avez besoin qu'une seule fois, il est exagéré de charger un plugin.

Pour une date "jj/mm/aaaa", cela fonctionne pour moi:

new Date(d.date.substring(6, 10),d.date.substring(3, 5)-1,d.date.substring(0, 2));

Inversez simplement le mois et le jour pour mm/jj/aaaa, la syntaxe est new Date(y,m,d)

3
stallingOne

J'ai utilisé la fonction de date javascript toLocaleDateString pour obtenir

var Today = new Date();
var r = Today.toLocaleDateString();

Le résultat de r sera

11/29/2016

Plus d'informations sur: http://www.w3schools.com/jsref/jsref_tolocaledatestring.asp

3
MUlferts

Utilisez moment js pour toute opération de date.

https://momentjs.com/

console.log(moment("Sunday, February 28, 2010").format('MM/DD/YYYY'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
1
Vijay Maheriya