Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.12.2010, 12:21
Новичок на форуме
Отправить личное сообщение для zhulanov Посмотреть профиль Найти все сообщения от zhulanov
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 24.12.2010, 13:33
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от zhulanov
. понедельник первой недели 2010 года - это 4 января, и уж никак не второе.
мож стоит с календарём сначала разобраться? понедельник будет 3 января возьми дату выдаваемую ,сложи со своей версией даты. раздели на два и получишь реальную дату
Ответить с цитированием
  #3 (permalink)  
Старый 24.12.2010, 13:36
Новичок на форуме
Отправить личное сообщение для zhulanov Посмотреть профиль Найти все сообщения от zhulanov
 
Регистрация: 24.12.2010
Сообщений: 2

Цитата:
понедельник первой недели 2010 года - это 4 января
Если уж отвечаете, то читайте внимательнее, прежде чем советы давать.

Вопрос закрыт, сам разобрался.
Ответить с цитированием
  #4 (permalink)  
Старый 24.12.2010, 13:38
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

я в календарь смотрю
Ответить с цитированием
  #5 (permalink)  
Старый 24.12.2010, 13:43
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

дествительно не тот год посмотрел
Ответить с цитированием
  #6 (permalink)  
Старый 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));
Ответить с цитированием
  #7 (permalink)  
Старый 24.12.2010, 14:30
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 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);
Ответить с цитированием
  #8 (permalink)  
Старый 02.01.2011, 19:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 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))


//Припозднился чуток, но делать нефиг.
Ответить с цитированием
  #9 (permalink)  
Старый 19.12.2011, 09:04
Новичок на форуме
Отправить личное сообщение для realdreamy Посмотреть профиль Найти все сообщения от realdreamy
 
Регистрация: 19.12.2011
Сообщений: 1

today = new Date()
weekNumber = today.toLocaleFormat("%U")
Ответить с цитированием
  #10 (permalink)  
Старый 02.10.2014, 02:33
Интересующийся
Отправить личное сообщение для Norm Iridium Посмотреть профиль Найти все сообщения от Norm Iridium
 
Регистрация: 16.05.2010
Сообщений: 19

var d=new Date(y,0,7*(w-1));

у вас на неделю спешит кажется... минус один дописал
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск