По номеру недели получить дату понедельника этой недели
Здравствуйте.
Есть номер недели в году, например 2, нужно получить дату понедельника в этой неделе. Мой вариант ниже, но дело в том, что он работает не корректно. Буду рад любой помощи) Если задать wnum = 1 (номер недели = 1), то результатом работы скрипта будет дата будет Sat Jan 02 2010 14:26:11 GMT+0500, что совсем не то, т.к. понедельник первой недели 2010 года - это 4 января, и уж никак не второе. //Номер недели var wnum = 1; //Количество дней от 1 января до понедельника этой недели var countdays = wnum * 7 - 6; //1 января текущего года var firstDayOfCurYear = new Date(); firstDayOfCurYear.setFullYear(firstDayOfCurYear.getFullYear(), 0, 1); //Точная дата понедельника для заданной недели var dateOfMondayInWeek = new Date(firstDayOfCurYear.valueOf() + countdays * 24 * 60 * 60 * 1000); |
Цитата:
|
Цитата:
Вопрос закрыт, сам разобрался. |
я в календарь смотрю:D
|
дествительно не тот год посмотрел
|
Вариант )))
function DateOfMondayInWeek(b, c) { for (var a = 1;; a++) if ((new Date(b, 0, a)).getDay() == 1) break; a += (c - 1) * 7; return new Date(b, 0, a) } alert(DateOfMondayInWeek(2010, 1)); |
Определение даты для любого дня недели по номеру недели
// определяемый год var y = 2010; // номер полной недели в году (считается от нуля) var n = 0; // номер дня недели (1 - понедельник, 0 - воскресенье) var w = 1; // первый день года var d1 = new Date(y, 0, 1); // его день недели var firstDay = d1.getDay(); // день в году var days = firstDay == w ? 1 : (n + 1) * 7 + w - (firstDay - 1); // дата для указанного дня недели var dn = new Date(y, 0, days); alert(dn); |
Для любого дня, красивее.
//недели и дни с еденицы, в русском варианте function getDayInWeek (week,day,year) { var w=week||1,n=day||1,y=year||new Date().getFullYear(); //defaults var d=new Date(y,0,7*w); d.setDate(d.getDate()-(d.getDay()||7)+n); return d } alert(getDayInWeek()) alert(getDayInWeek(1,1,2010)) alert(getDayInWeek(3,2,2010)) //Припозднился чуток, но делать нефиг. |
today = new Date()
weekNumber = today.toLocaleFormat("%U") |
var d=new Date(y,0,7*(w-1));
у вас на неделю спешит кажется... минус один дописал |
Часовой пояс GMT +3, время: 02:45. |