Jump to content
  • 0

Date() разные даты


hitori
 Share

Question

Здравствуйте, скажите пожалуйста, почему в переменной first_of_current_month отпечатывается штамп времени на месяц меньше предыдущего? Смысл этого куска кода в получении информации о первом дне текущего месяца(а именно день недели, если это принципиально, самого getDay() тут нет, потому что проблема именно в этом) 

З.Ы под вечер мозги уже расплавились и я теперь вообще не уверен в том, что тут не написана полная ересь... если это так, то исправьте меня пожалуйста

var currentDate = new Date();var first_of_current_month = new Date(currentDate.getFullYear()+"-"+currentDate.getMonth()+"-1");console.log(currentDate.getFullYear()+"-"+currentDate.getMonth()+"-1");console.log(first_of_current_month.getFullYear()+"-"+first_of_current_month.getMonth()+"-"+first_of_current_month.getDate());
Edited by hitori
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Если нужно узнать день недели 1 числа данного месяца - попробуйте так..

var day = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDay();console.log(day);

В результате получим 3 (Среда).

 

Если нужно получить именно день недели строкой (Например: Вторник) - используйте массив..

var weekday=new Array(7);weekday[0]="Воскресенье";weekday[1]="Понедельник";weekday[2]="Вторник";weekday[3]="Среда";weekday[4]="Четверг";weekday[5]="Пятница";weekday[6]="Суббота";var dayString = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDay();console.log(weekday[dayString]);
Edited by Q4Dizzy
Link to comment
Share on other sites

  • 0

 

Если нужно узнать день недели 1 числа данного месяца - попробуйте так..

var day = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDay();console.log(day);

В результате получим 3 (Среда).

 

Если нужно получить именно день недели строкой (Например: Вторник) - используйте массив..

var weekday=new Array(7);weekday[0]="Воскресенье";weekday[1]="Понедельник";weekday[2]="Вторник";weekday[3]="Среда";weekday[4]="Четверг";weekday[5]="Пятница";weekday[6]="Суббота";var dayString = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDay();console.log(weekday[dayString]);

да вопрос то не в этом был, я не понимаю, почему когда я даю Date() конкретный месяц (9ый в данном случае) он возвращает мне дату на месяц меньше

Link to comment
Share on other sites

  • 0

Тут скорее всего дело в "-" и парсере даты. Увы, чёткого ответа по этому делу дать не могу.

 

 

 

При вызове с одним аргументом - строкой, строка разбирается и интерпретируется как дата, так же, как и в методе Date.parse.

 

 

Рыть надо скорее всего тут.

Link to comment
Share on other sites

  • 0
The getMonth method returns an integer between 0 and 11 indicating the month value in the Date object. The integer returned is not the traditional number used to indicate the month. It is one less. If "Jan 5, 1996 08:47:00" is stored in a Date object, getMonth returns 0.

 

  • Like 1
Link to comment
Share on other sites

  • 0

давайте рассмотрим строки:

var currentDate = new Date(); //возвращает дату сегодняшнюю, скажем 09.10.2014

currentDate.getMonth() //возвращает из этой даты месяц = 9 - т.к. отсчет месяца идет с 0

и получается, что вы пытаетесь

var first_of_current_month = new Date("2014-9-1"); //данную строку он понимает как 01.09.2014

а если сделаете правильно как вам советуют

var day = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDay();

т.е.

var day = new Date(2014, 9, 1).getDay(); //и парсер 9 поймет как 10месяц, т.к. отсчет идет с 0

 

надеюсь понятно объяснил. По сути вы сложили км и м, а из математики мы помним, что нужно их привести к единой системе счисления

 

 

как вы делаете 2014-09-01 парсер разбирает эту строку как дату и получает месяц считая от единицы и возвращает вам функцией getMonth() 8 т.к. он считает от 0

 

как вам предлагают 2014,09,01 парсер видит, что ему передали 9 и он думает, что вы тоже считаете от 0, а не от 1 и ничего не меняет

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy