Как получить ближайший выходной день?
Добрый день!
Занимаюсь созданием кнопок, по нажатию на которые выставляется дата. Сделал кнопки "Завтрашний день" и "Через неделю". Вот такой код:
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, время: 16:09. |