2015-12-29 2 views
0

Вот мой код,на основе количества дней получить дату начала и дату окончания

function getDateonperiod(elem) 
{ 
    var periodval=$("#period"+elem).val(); 
    var days = periodval * 30; 
    var startDate=new Date(); 
    var endDate = new Date(); 
    endDate.setDate(endDate.getDate() + days); 
    var strDate = startDate.getFullYear() + "-" + (startDate.getMonth()+1) + "-" + startDate.getDate(); 
    $("#from_date"+elem).val(strDate); 
    $("#to_date"+elem).val((endDate.getFullYear()+'-'+endDate.getMonth() + 1)+'-'+endDate.getDate()); 
} 

OnChange значение поля ввода получает количество дней days. Я получаю дату начала правильно, но дата окончания, если входное значение 1 работает нормально, но его больше, чем одно его возвращение 2016-11-272016-21-28 с текущей даты. Как это исправить?

ответ

1

Вы пропустили скобку:

endDate.getFullYear()+'-'+(endDate.getMonth() + 1)+'-'+endDate.getDate(); 

Попробуйте это:

$("#period").change(function() { 
 
    var periodval=$("#period").val(); 
 
    var days = periodval * 30; 
 
    var startDate=new Date(); 
 
    var endDate = new Date(); 
 
    endDate.setDate(endDate.getDate() + days); 
 
    var strDate = startDate.getFullYear() + "-" + (startDate.getMonth()+1) + "-" + startDate.getDate(); 
 
    $("#from_date").val(strDate); 
 
    $("#to_date").val(endDate.getFullYear()+'-'+(endDate.getMonth() + 1)+'-'+endDate.getDate()); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" id="period" /> 
 
<input type="text" id="from_date" /> 
 
<input type="text" id="to_date" />

0

Вы не добавляя дни правильно.

function getDateonperiod(elem) 
{ 
    var periodval=$("#period"+elem).val(); 
    var days = periodval * 30; 
    var startDate=new Date(); 
    var endDate = new Date(startDate.getFullYear(),startDate.getMonth(),startDate.getDate()+n); 
    var strDate = startDate.getFullYear() + "-" + (startDate.getMonth()+1) + "-" + startDate.getDate(); 
    $("#from_date"+elem).val(strDate); 
    $("#to_date"+elem).val((endDate.getFullYear()+'-'+endDate.getMonth() + 1)+'-'+endDate.getDate()); 
} 
0

Просто используйте эту библиотеку http://momentjs.com/

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"> 

Ваш код с momentjs

function getDateonperiod(elem) 
{ 
    var periodval=$("#period"+elem).val(); 
    var days = periodval * 30; 
    var startDate = new moment(); 
    var endDate = new moment(); 
    endDate.add(days,'days'); 
    var strStartDate = startDate.format("YYYY - MM - DD"); 
    var strEndDate = endDate.format("YYYY - MM - DD"); 
    $("#from_date"+elem).val(strDate); 
    $("#to_date"+elem).val(strEndDate); 
} 
+0

формат вашего кодированного plz – Bek

+0

@Bek было ошибочно опубликовано .. я отредактировал его –

1

вы можете использовать moment.js здесь

var days = 10; 
 
var dateFormat = 'YYYY-MM-DD'; 
 
var startFormatted = moment().format(dateFormat); 
 
var endFormatted = moment().add(days, 'day').format(dateFormat); 
 
console.log(startFormatted) 
 
console.log(endFormatted)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script> 
 
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>

0

Я просто добавил функцию даты для добавления дней. Это может вам помочь:

Date.prototype.addDays = function(days) { 
    this.setDate(this.getDate() + parseInt(days)); 
    return this; 
}; 
$("#period").change(function() { 
    var periodval = $("#period").val(); 
    var days = periodval; 
    var startDate = new Date(); 
    var endDate = new Date(); 
    endDate.addDays(days); 
    //endDate.setDate(endDate.getDate() + days); 
    var strDate = startDate.getFullYear() + "-" + (startDate.getMonth() + 1) + "-" + startDate.getDate(); 
    $("#from_date").val(strDate); 
    $("#to_date").val(endDate.getFullYear() + '-' + (endDate.getMonth() + 1) + '-' + endDate.getDate()); 
}); 
Смежные вопросы