Это действительная дата в JavaScript?

моя функция возвращает выбранную дату календаря в этом формате:

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

Когда я пытаюсь использовать его для новой даты, это не работает:

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

Все, что мне нужно, это просто название дня недели этой даты.

Есть ли у вас какие-либо предложения ?


person Community    schedule 31.07.2017    source источник
comment
должен спросить: вы вернули returnValue? потому что new Date('6.7.2017') похоже работает   -  person Jorg    schedule 31.07.2017
comment
Это нормально работает. Дата поддерживает указанный вами формат. Вы можете поделиться своим кодом?   -  person Sumit    schedule 31.07.2017
comment
Попробуйте new Date(returnValue.replace(/\./g, '-')). Если вы открыты для библиотеки, вам следует использовать moment.js. Тогда вы можете сделать moment(returnValue, "MM.DD.YYYY"). Вы также можете попробовать new Date(Date.parse(returnValue))   -  person Rajesh    schedule 31.07.2017
comment
дата вашей маски недействительна для javascript d.m.yyyy   -  person Álvaro Touzón    schedule 31.07.2017
comment
Проверьте ссылку на new Date, чтобы правильно отформатировать конструктор MDN   -  person mabe02    schedule 31.07.2017


Ответы (2)


Формат даты также имеет дату и месяц, измененные из формата, который распознает Date(). Эта функция преобразует строку даты с использованием . и обозначения первого дня в допустимый формат:

function transformDate (date){
	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)

person IanS5    schedule 31.07.2017
comment
это решение отлично работает в Firefox! Спасибо! - person ; 31.07.2017
comment
Есть очень много дубликатов. Полностью избегать парсера, использование встроенного парсера чревато. Анализ строки для форматирования другой строки, анализируемой встроенным анализатором, не имеет большого смысла. Просто проанализируйте строку и передайте части конструктору Date. - person RobG; 01.08.2017
comment
Да ... я не знаю как ^^ - person ; 01.08.2017

Проверить строку даты можно с помощью Date.parse() API.

Но учтите, что проверка этого API не совсем точна, поскольку он принимает как ISO 8601, так и RFC 2822 формат даты. Если это действительный date, тогда API возвращает вам epoch time, который затем можно использовать для создания объекта Javascript Date. В противном случае возвращается NaN.

Что касается получения day - можно использовать .getDay() API.

Пример:

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

Ссылки: 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

person Samuel Toh    schedule 31.07.2017
comment
См. Совет во втором справочнике: Не рекомендуется использовать Date.parse ... Есть еще много различий в том, как разные хосты анализируют строки даты, поэтому строки даты следует анализировать вручную. - person RobG; 01.08.2017