2016-01-01 4 views
0

У меня есть эта функция даты, которая дает диапазон дат шести месяцев, учитывая, прошел ли диапазон до нового года. Как я могу изменить эту функцию даты в течение 15 дней, принимая во внимание, если диапазон перешел на новые месяцы и/или на новый год.Получение диапазона дат корректируется к дням

var dt = new Date(); 
var month = new Array(); 
month[0] = "JAN"; 
month[1] = "FEB"; 
month[2] = "MAR"; 
month[3] = "APR"; 
month[4] = "MAY"; 
month[5] = "JUNE"; 
month[6] = "JULY"; 
month[7] = "AUG"; 
month[8] = "SEPT"; 
month[9] = "OCT"; 
month[10] = "NOV"; 
month[11] = "DEC"; 

var tmonth = dt.getMonth() + 6 <= 11 ? dt.getMonth() + 6 : dt.getMonth() - 6; 
var tyear = dt.getMonth() + 6 <= 11 ? dt.getFullYear() : dt.getFullYear() + 1; 

var eom = new Date(tyear, tmonth + 1, 0).getDate(); //get last day of the month 
var tday = dt.getDate() > eom ? eom : dt.getDate(); //check if the from day of month > last day of month 


var frm = dt.getDate() + '-' + month[dt.getMonth()] + '-' + dt.getFullYear().toString().substr(2, 2); 
var till = tday + '-' + month[tmonth] + '-' + tyear.toString().substr(2, 2); 
+0

Пожалуйста, форматировать Ваш код;) –

+0

@DmitriPavlutin отформатируйте свой код, что вы имеете в виду? – mikeb

+0

http://jsbeautifier.org/ :) –

ответ

0

Я думаю, что решение это было бы:

var dt = new Date();  
var month = new Array(); 
month[0] = "JAN"; 
month[1] = "FEB"; 
month[2] = "MAR"; 
month[3] = "APR"; 
month[4] = "MAY"; 
month[5] = "JUNE"; 
month[6] = "JULY"; 
month[7] = "AUG"; 
month[8] = "SEPT"; 
month[9] = "OCT"; 
month[10] = "NOV"; 
month[11] = "DEC"; 

var range = 15; 

var tmonth = dt.getMonth() + (range % 12) <= 11 ? dt.getMonth() + (range % 12) : dt.getMonth() - 6; 
var tyear = dt.getMonth() + (range % 12) <= 11 ? dt.getFullYear() + Math.floor(range/12) : dt.getFullYear() + Math.floor(range/12) + 1; 

var eom = new Date(tyear, tmonth + 1, 0).getDate(); //get last day of the month 
var tday = dt.getDate() > eom ? eom : dt.getDate(); //check if the from day of month > last day of month 


var frm = dt.getDate() + '-' + month[dt.getMonth()] + '-' + dt.getFullYear().toString().substr(2, 2); 
var till = tday + '-' + month[tmonth] + '-' + tyear.toString().substr(2, 2); 

Теперь вы можете выбрать любой диапазон, который вы хотите - будь то 6 или 15.

Смежные вопросы