Member 14130808 Ответов: 1

Скрипт для отображения даты предстоящей двухмесячной пятницы


Дата отсечения: дата отсечения устанавливается как предстоящая двухмесячная пятница (например, даты отсечения-14 и 28 июня. Если представление сделано сегодня(26 июня), то дата отсечения-28 июня. Если представление будет сделано 29 июня, то датой отсечения будет 12 июля. Как только наступит 13 июля, следующая дата отсечения будет 26 июля. И так далее, в зависимости от того, когда пользователь отправляет форму, она будет отображать правильную дату отсечения. Я просмотрел несколько других примеров, но не могу найти ни одного для того, что я хочу. Скрипт должен отображать дату наступления двухмесячной пятницы.

Что я уже пробовал:

<script>
var currentDate = new Date(new Date().getTime()+(8*24*5000000))
document.getElementById('cutoffdate').value = (currentDate.getDate()) +'/' + (currentDate.getMonth()+1) +'/'+ currentDate.getFullYear()
</script>

Maciej Los

Я думаю, что вам нужно получить последний день в месяце, а затем вернуться в прошлую пятницу. Перенеситесь на 1 неделю назад, чтобы получить начальную дату для двухмесячной пятницы. Чек, если эта дата больше, чем сегодня. Если нет, перейдите к следующему месяцу и повторите шаги....
[РЕДАКТИРОВАТЬ]
А как насчет мая 2019 года?

1 Ответов

Рейтинг:
10

Maciej Los

Пожалуйста, сначала прочтите мой комментарий к этому вопросу.

Используя чистый JavaScript, я сделал 2 функции:
1. он приходит в последнюю пятницу месяца

function GetLastFridayOfMonth(submissionDate){
	var lastfriday = new Date(submissionDate);
	var bd = new Date(submissionDate.getFullYear(), submissionDate.getMonth(), 1);
	var ed = new Date(bd.getFullYear(), bd.getMonth()+1, bd.getDate()-1);
	var cd = ed;
	do{
		if(cd.getDay()==5) //friday!
		{
			lastfriday = cd;
			break;
		}
		cd = new Date(cd.getFullYear(), cd.getMonth(), cd.getDate()-1)
	}while(cd>=bd);
	
	return lastfriday;



2. он получает CutOfDate

function GetNextCutOffDate(submissionDate){
	//get last day in a month
	var lastfriday = GetLastFridayOfMonth(submissionDate);
	var prevfriday = new Date(lastfriday.getFullYear(), lastfriday.getMonth(), lastfriday.getDate()-14);
	var cod = submissionDate
	
	//submission date is bigger than last friday in a month
	if(submissionDate>=lastfriday)
	{
		submissionDate = new Date(submissionDate.getFullYear(), submissionDate.getMonth()+1, 1);
		lastfriday = GetLastFridayOfMonth(submissionDate)
		prevfriday = new Date(lastfriday.getFullYear(), lastfriday.getMonth(), lastfriday.getDate()-14);
	}
	
	if(submissionDate<prevfriday)
		cod = prevfriday
	else
		cod = lastfriday
	
	return cod
}

Полный, рабочий пример находится здесь: JSFiddle[^]