2010-06-04 4 views
32

J'ai une chaîne de date "Dimanche 28 Février 2010" que je voudrais convertir en un objet date js formaté @ MM/JJ/AAAA mais je ne sais pas comment. Aucune suggestion?jquery/javascript convertir la date en date à

+1

Peut-être ** split() ** est plus rapide, et vous pouvez écrire un code plus court :) –

Répondre

22

Je saisirais date.js sinon vous devrez lancer votre propre fonction de formatage.

+4

+1. Date.js est comme gâteau délicieux humide –

+8

Il convient de noter que date.js casse jQuery UI datepicker car il modifie le prototype Date. Le noyau de jQuery indique qu'ils ne répareront pas les bogues liés à ceci. – SupaIrish

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

Procédé indexOf sur des tableaux est seulement supporté sur des navigateurs actuellement disponibles (à savoir pas IE). Vous devrez effectuer la recherche vous-même ou utiliser l'une des nombreuses bibliothèques offrant les mêmes fonctionnalités.

Le code ne contient pas non plus de vérification d'erreur à ajouter. (String ne correspond pas à l'expression régulière, mois non existants, etc.)

98

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

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

puis suivre avec la méthode formatDate pour l'obtenir au format de chaîne que vous voulez

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

Si vous n'êtes pas en cours d'exécution avec jQuery bien sûr qu'il ya probablement pas le meilleur plan étant donné que vous auriez besoin de base jQuery ainsi comme le module d'interface utilisateur de datepicker ... mieux d'aller avec le sugge Stion de Segfault ci-dessus pour utiliser date.js.

HTH

+8

+1 pour une réponse utilisant jquery. La réponse la plus proche à cette question. Si vous utilisez jquery, inutile d'ajouter une autre lib. –

+3

Non ce n'est pas correct. datepicker ne fait pas partie de jQuery. Sa partie de jQuery UI.Si vous n'avez que la bibliothèque principale, vous ajoutez essentiellement une autre bibliothèque. Si vous n'avez pas ou ne prévoyez pas d'utiliser jQuery UI alors je jetterai un coup d'oeil à Moment.js. –

+2

@Colin, c'est ce que j'ai interprété "vous auriez besoin de jQuery core ainsi que le module d'interface utilisateur de datepicker" pour signifier. – isherwood

2

Si vous avez seulement besoin une fois, il est exagéré de charger un plug-in.

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

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

1

Utilisez instant 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>