Установка дня недели

Подскажите пожалуйста, присвоить дате день недели, например мы имеем понедельник, а надо пполучить
какой-либо другой (от 0 до 6).

Пример var cdate= Dataset.Values('Date'); //получаем текущ время (16.09.2008 15:54:54)
var newf = (new Date(cdate)).getDay(); //получаем день недели (от 0 до 6)
newf = newf + 2;

Как получить новую дату с днем недели newf?

Большое спасибо.

Нравится

5 комментариев

Если речь идет об увеличении даты на некоторое кол-во дней, то можно использовать стандартное сложение дат:

        var Today = GetTodayDate();
	var Milliseconds = Today.getTime();
	Milliseconds = Milliseconds + 1000 * 60 * 60 * 24 * 2;
	var ResultDate = new Date();
	ResultDate.setTime(Milliseconds);
        var RemindTime = ResultDate.getVarDate();

, где 2 - кол-во дней

Не совсем, меня интересует именно установить день недели и время (значения их в переменных)я пробовал использовать
dateObj.getDay() и dateObj.getHours()
dateObj.setDay() и dateObj.setHours()
но ничего не получилось, может ошибся

Это нужно для задачи: есть проблема, есть дата ее регистрации (сdate) и день недели от cdate (var newf = (new Date(cdate)).getDay();)
Проблема относится к сервису, который предоставляется не круглосуточно (ТВ - время начала предоставления сервиса,ТЕ - время окончания его предоставления) и не каждый день.
Нужно получить планируемую дату завершения.
И вот когда мы получаем день регистрации (например вторник (newf = 2)) идет проверка предоставляется ли сервис в этот день, если нет то newf = newf+1 и опять проверка
И так мы можем дойти например до newf=5(пятница) Надо установить дату завершения пятница, время в эту дату должо быть TB

var cdate= Dataset.Values('Date');         // получаем текущ время (16.09.2008 15:54:54)
var day = (new Date(cdate)).getDay();      //получаем день недели (от 0 до 6)
cdate = (new Date(cdate)).getTime();       // Получаем дату в милисек.
 
switch(day){                               // В зависимости от дня добавляем нужное кол-во дней и часов если надо  
       case(1):                            // не знаю какие там условия, например если 1 (понедельник), то добавляем 2 дня
          cdate = cdate + (1000 * 60 * 60 * 24)* 2;  // Добавляем к этой дате N - дней
       break;
 
       case(2):                            // если 2 (вторник), то добавляем 1 день
          cdate = cdate + (1000 * 60 * 60 * 24)* 1;  // Добавляем к этой дате N - дней
       break;
 
}
 
var ResultDate = new Date();
ResultDate.setTime(cdate);
var NewDate = ResultDate.getVarDate();     // Получаем новую дату с нужным днем

Могу лишь добавить, что самый корректный и изящный способ увеличения даты на 1 день следующий:

var DateValue = Dataset.Values('Date');
var DateObject = new Date(DateValue);
var D = DateObject.getDate(); // получаем день в месяце
DateObject.SetDate(D + 1); // добавляем 1 день, объект правильно пересчитывает следующую дату, переводит месяц, год и т.д.

Достоинством такого подхода является простота и корректная работа в те дни, когда в сутках 23 и 25 часов (да, такое бывает весной и осенью в дни перевода времени вперед и назад, способ с добавлением миллисекунд не подходит).

Не вижу смысла устанавливать именно день недели. Просто берете дату, анализируете день недели, если нужно, переводите на день вперед и все заново.

Желаю успехов!

Большое всем спасибо, сделал то что мне надо было, все работает, тольо завтра переделаю с миллисекунд на дни.

Показать все комментарии