2017-09-29 1 views
0

J'ai une chaîne de date heure September 30, 2017 @ 11:23 am, qui est analysable en chrome en utilisant:Comment analyser cette chaîne de date illogique en javascript?

var end = new Date("September 30, 2017 @ 11:23 am"); 

Mais dans Firefox, il donne l'erreur invalid date. Comment puis-je l'analyser dans Firefox?

+0

Parsing chaînes de date/heure est notoirement peu fiables, car il y a tant de formats différents et la plupart des API de date tout simplement ne se soucient pas soutenir plus de quelques formats standardisés. Vous avez probablement besoin d'écrire votre propre fonction d'analyse ou d'utiliser une bibliothèque qui prend en charge ce format particulier. –

+0

Envisagez-vous d'analyser * seulement ce format *? Vous pouvez utiliser des expressions comme l'expression régulière pour extraire la partie «September», «30», «2017» et «11:23». Cependant, si vous essayez d'analyser une chaîne de date générale qui peut prendre plusieurs formats, vous aurez besoin d'une approche différente. – maowtm

Répondre

0

Selon MDN

Valeur de chaîne représentant une date. La chaîne doit être dans un format reconnu par la méthode Date.parse()

Source

Solution: Vous pouvez simplement supprimer @ du stirng. en utilisant replace méthode ou de toute autre manière.

Ex:

var d = "September 30, 2017 @ 11:23 am" 
 
var end = new Date(d.replace("@","")); 
 

 
console.log(end)

+0

Merci, très bien travaillé. – mega6382

+0

Si vous référencez MDN, vous devez créer un lien vers la [* partie concernée *] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date), où il est indiqué: " *** l'analyse des chaînes de date avec le constructeur Date (et Date.parse, elles sont équivalentes) est fortement déconseillée en raison des différences et des incohérences du navigateur. *** ". – RobG

+0

@ mega6382 De rien. –

-1

Dans Firefox et chrome, en supprimant les œuvres @. vous pouvez remplacer le symbole @.

let date = 'September 30, 2017 @ 11:23 am' 
new Date(date.replace('@', ''))