24.12.2010, 12:21
|
Новичок на форуме
|
|
Регистрация: 24.12.2010
Сообщений: 2
|
|
По номеру недели получить дату понедельника этой недели
Здравствуйте.
Есть номер недели в году, например 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);
Последний раз редактировалось zhulanov, 24.12.2010 в 13:01.
|
|
24.12.2010, 13:33
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от zhulanov
|
. понедельник первой недели 2010 года - это 4 января, и уж никак не второе.
|
мож стоит с календарём сначала разобраться? понедельник будет 3 января возьми дату выдаваемую ,сложи со своей версией даты. раздели на два и получишь реальную дату
|
|
24.12.2010, 13:36
|
Новичок на форуме
|
|
Регистрация: 24.12.2010
Сообщений: 2
|
|
Цитата:
|
понедельник первой недели 2010 года - это 4 января
|
Если уж отвечаете, то читайте внимательнее, прежде чем советы давать.
Вопрос закрыт, сам разобрался.
|
|
24.12.2010, 13:38
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
я в календарь смотрю
|
|
24.12.2010, 13:43
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
дествительно не тот год посмотрел
|
|
24.12.2010, 14:12
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Вариант )))
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));
|
|
24.12.2010, 14:30
|
Профессор
|
|
Регистрация: 14.12.2009
Сообщений: 155
|
|
Определение даты для любого дня недели по номеру недели
// определяемый год
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);
|
|
02.01.2011, 19:30
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
Для любого дня, красивее.
//недели и дни с еденицы, в русском варианте
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))
//Припозднился чуток, но делать нефиг.
|
|
19.12.2011, 09:04
|
Новичок на форуме
|
|
Регистрация: 19.12.2011
Сообщений: 1
|
|
today = new Date()
weekNumber = today.toLocaleFormat("%U")
|
|
02.10.2014, 02:33
|
Интересующийся
|
|
Регистрация: 16.05.2010
Сообщений: 19
|
|
var d=new Date(y,0,7*(w-1));
у вас на неделю спешит кажется... минус один дописал
|
|
|
|