Подскажите пожалуйста, присвоить дате день недели, например мы имеем понедельник, а надо пполучить
какой-либо другой (от 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?
Большое спасибо.
Нравится
Если речь идет об увеличении даты на некоторое кол-во дней, то можно использовать стандартное сложение дат:
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 часов (да, такое бывает весной и осенью в дни перевода времени вперед и назад, способ с добавлением миллисекунд не подходит).
Не вижу смысла устанавливать именно день недели. Просто берете дату, анализируете день недели, если нужно, переводите на день вперед и все заново.
Желаю успехов!
Большое всем спасибо, сделал то что мне надо было, все работает, тольо завтра переделаю с миллисекунд на дни.