@luntik4344

Почему не работает функция getDay()?

Здравствуйте, уважаемые пользователи.

Передо мной стоит довольно простая задача - определить день недели по заданной дате в формате dd/mm/yy. По какой-то необъяснимой мне причине, простейший JS код выдает неправильное значение. Например, если ввести дату 05/11/2015 (четверг), он возвращает число 6, думая, что этот день - суббота. Вот код:

var date=$('#inputDate').val();
var date_arr=date.split("/");
var date_obj=new Date(date_arr[2],date_arr[1],date_arr[0]);
var day=date_obj.getDay();
alert(day);


Заранее большое спасибо!
  • Вопрос задан
  • 1046 просмотров
Решения вопроса 1
1 В конструкторе даты параметр месяц принимает значения от 0 до 11, следовательно в параметре 'месяц' нужно вычесть единицу.
2. Как подметили ранее GetDay возвращает значения от 0 - Вс. И четверг будет 4
3. Постарайтесь именовать переменные в стиле camelCase

var dateParts = '05/11/2015'.split('/'),
    date = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);

console.log(date.getDay()); // 4

P.S. Дабы не мучаться с датой на js обратите внимание на momentjs
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
virtyaluk
@virtyaluk
Неправильный формат даты. Конструктор Date принимает дату в формате mm/dd/yyyy. Это во первых, а во вторых, getDay возвращает zero-based значения дня недели, где 0 - Вс, 1 - Пн, 2 - Вт и т.д.
Ответ написан
AlienZzzz
@AlienZzzz
технарь с 1999 года
лучше делать не так, а вот так:
var obj = $('#inputDate')
var pattern = /(\d{2})\.(\d{2})\.(\d{4})/;
var today = new Date(obj.val().replace(pattern,'$3-$2-$1'));
today.getDay() ..... ну и далее как нужно

тут вы можете сделать как Вам удобно - я про формат даты
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы