Как получить ближайший выходной день?
Добрый день!
Занимаюсь созданием кнопок, по нажатию на которые выставляется дата. Сделал кнопки "Завтрашний день" и "Через неделю". Вот такой код: months = [ [31,'Январь','января'], [28,'Февраль','февраля'], [31,'Март','марта'], [30,'Апрель','апреля'], [31,'Май','мая'], [30,'Июнь','июня'], [31,'Июль','Июля'], [31,'Август','августа'], [30,'Сентябрь','сентября'], [31,'Октябрь','октября'], [30,'Ноябрь','ноября'], [31,'Декабрь','декабря'] ]; weekDays = [ ['воскресенье','вс'], ['понедельник','пн'], ['вторник','вт'], ['среда','ср'], ['четверг','чт'], ['пятница','пт'], ['суббота','сб'] ]; ... function echo_date( date ){ echo_date = function(date){ date = new Date( date ); return { "date" : date, "month" : months[ date.getMonth() ][2], "day" : weekDays[ date.getDay() ][0], "year" : date.getFullYear(), "day_num" : date.getDate(), "full_date" : date.getDate()+'.'+(date.getMonth() + 1)+'.'+date.getFullYear() }; } return echo_date(date); ... //завтра $(document).on('click', '#tomorrowCal', function(){ var dates = echo_date( Date.now()+24*60*60*1000 ); $('#avia-tab #when').val(dates.day_num+" "+dates.month+" "+dates.year+" ("+dates.day+")"); sr.dateTo = dates.full_date; }); //через неделю $(document).on('click', '#avia-tab .when-back .example', function(){ var dates = echo_date( Date.now()+7*(24*60*60*1000) ); $('#avia-tab #when-back').val(dates.day_num+" "+dates.month+" "+dates.year+" ("+dates.day+")"); sr.dateBack = dates.full_date; }); А как сделать, что бы возвращалась дата ближайшего выходного дня (суббота или воскресенье)? Никак не могу придумать... Спасибо всем, кто подскажет! |
Вроде бы объект Date все это сам умеет делать.
Между тем решение давно существует. Вы просто пишите нормальным текстом чего хотите, программа его распознает и все считает. Вам остается только вписать в валуе кнопок тот самый текст. Например на пхп вот такая функция есть http://php.net/manual/en/function.strtotime.php - но для русского языка ее надо отдельно локализовать. То есть вам надо такую же на js. |
Не разбирался что тут к чему, но похоже на отстой, и тем не менее: https://code.google.com/p/datejs/
Для меня эти даты полная идиосинкразия. Придется вот так на js вычислять когда там следующий выходной или какое число будет "через 3 дня", я лучше аяксом на сервер буду ходить спрашивать strtotime чем мудохаться со всеми этими кусочками дней, дат и времени. |
diakon,
<script> var data = new Date(); data.setDate(data.getDate()+1) document.write('завтра : ' + data.toLocaleDateString() + "<br>") data = new Date(); data.setDate(data.getDate()+7) document.write('через неделю : ' + data.toLocaleDateString() + "<br>") data = new Date(); data.setDate(data.getDate()+6 - data.getDay()) document.write('ближайшая суббота : ' + data.toLocaleDateString() + "<br>") data = new Date(); data.setDate(data.getDate()+7 - data.getDay()) document.write('ближайшее воскресенье : ' + data.toLocaleDateString() + "<br>") data = new Date(); data.setMonth(data.getMonth()+1,0) document.write('всего дней в этом месяце : ' + data.getDate() + "<br>") </script> |
Это скучно прибавлять и вычитать. А вот например для срока жизни куков той или иной роли юзера у меня обычное текстовое поле, куда я пишу, скажем для админской роли +3 hours, а для ритейла 1 year, а для опера +30 days иниипет.
А иначе как? datatime-local заводить и в модель дописывать смещение? В общем все эти калькуляции собираются в объект и индексируются обычными словами завтра, послезавтра, через неделю, в следующий выходной и тп. Нарисуйте. |
Часовой пояс GMT +3, время: 11:37. |