2017-07-31 3 views
1

ma fonction retourne la date sélectionnée d'un calendrier dans ce format:Est-ce une date valide en JavaScript?

var returnValue = "6.7.2017"; //day.month.year 

Lorsque je tente de l'utiliser pour une nouvelle date, il ne fonctionne pas:

var weekdays = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; 
var wkdayname = new Date(returnValue); //Error: returnValue ist NaN 
var dayName = weekdays[wkdayname.getDay()]; 

Tout ce que je veux est juste le nom du jour de la semaine de cette date.

Avez-vous des suggestions?

+2

devez demander: avez-vous le retour 'returnValue'? parce que 'new Date ('6.7.2017')' semble fonctionner – Jorg

+0

Cela fonctionne très bien. La date prend en charge le format que vous fournissez. Pouvez-vous partager votre code? – Sumit

+0

Essayez 'new Date (returnValue.replace (/\./g, '-'))'. Si vous êtes ouvert pour la bibliothèque, vous devez utiliser moment.js. Ensuite, vous pouvez faire 'moment (returnValue," MM.DD.YYYY ")'. Vous pouvez également essayer 'new Date (Date.parse (returnValue))' – Rajesh

Répondre

0

Le format de date a également le jour et le mois passés à partir du format reconnu par Date(). Cette fonction transforme une chaîne de date à l'aide . jour et première notation au format valide:

function transformDate (date){ 
 
\t var day_month_year = date.split(".") 
 
    return [day_month_year[1],day_month_year[0],day_month_year[2]].join("/") 
 
} 
 

 
var returnValue = "6.7.2017"; //This is a string 
 

 
var weekdays = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; 
 
var wkdayname = new Date(transformDate(returnValue)); 
 
var dayName = weekdays[wkdayname.getDay()]; 
 
alert(dayName)

+0

cette solution fonctionne très bien dans Firefox! Je vous remercie! – louis12356

+0

Il y a beaucoup, beaucoup de doublons. Vous devriez éviter l'analyseur complètement, en utilisant l'analyseur intégré est lourde. L'analyse d'une chaîne pour formater une autre chaîne analysée par l'analyseur intégré n'a pas beaucoup de sens. Analysez simplement la chaîne et donnez les pièces au constructeur Date. – RobG

+0

Ouais ... je ne sais pas comment ^^ – louis12356

-1

Vous pouvez valider une chaîne de date en utilisant l'API Date.parse().

Mais attention, la validation de cette API est un peu lâche car elle accepte les formats de date ISO 8601 ou RFC 2822. Si c'est un date valide alors l'API vous renvoie le epoch time qui peut ensuite être utilisé pour créer l'objet Javascript Date. Sinon, il renvoie NaN. Pour obtenir le code day, vous pouvez utiliser l'API .getDay().

Exemple:

if (Date.parse("aaabbcc")) { 
 
    console.log("aaabbcc is Valid"); 
 
} 
 
else { 
 
    console.log("aaabbcc is invalid"); 
 
} 
 

 
if (Date.parse("6.7.2017")) { 
 
    var date = new Date(Date.parse("6.7.2017")); 
 
    console.log("6.7.2017 is Valid"); 
 
    console.log("The day of the week is => " + date.getDay()); 
 
} 
 
else { 
 
    console.log("6.7.2017 is invalid"); 
 
}

Références: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

+0

Voir le conseil dans votre deuxième référence: "* Il n'est pas recommandé d'utiliser Date.parse ... Il existe encore de nombreuses différences dans la façon dont les différents hôtes analysent les chaînes de date, donc les chaînes de date doivent être analysé manuellement * ". – RobG