2016-01-29 3 views
0

Я разработал фрагмент кода, который отображает дату окончания, которая основана на выбранной дате, выбранной пользователем. Я попытался использовать новую функцию Date() в JavaScript, и она отлично работала. Однако, когда я пытаюсь использовать var ProperDate, который является Датой, которую выбрал пользователь (который я преобразовал в том же формате, что и в Javascript), дата не отображается так, как должна.Дата Функция не работает как ожидалось

Кодекс здесь:

<script> 

$('#dSuggest').on("input", function() { 
    var dInput = this.value; 

    var Month = dInput.substring(5, 7); 
    var Date = dInput.substring(8, 10); 
    var Year = dInput.substring(0, 4); 

    var ProperDate = Month+"/"+Date+"/"+Year; 

    console.log(dInput); 
    $('#output').text(ProperDate); 

    //var someDate = new Date(ProperDate); 
    var StartDate = new Date(); 
    var StartDate = StartDate.toLocaleDateString(); 

    if(StartDate > '1/31/2016'){ 
    var numberOfDaysToAdd = 365; 
    ProperDate.setDate(ProperDate.getDate() + numberOfDaysToAdd); 
    //var someDate = ProperDate.toLocaleDateString(); 
    } else { 
    var n = someDate.getDate(); 
    var numberOfDaysToAdd = n; 
    ProperDate.setDate(ProperDate.getDate() - numberOfDaysToAdd); 
    //var someDate = someDate.toLocaleDateString(); 
    } 
    document.getElementById("demo").innerHTML = someDate; 
}); 

</script> 
+0

Что вы получаете в консоли? –

+0

@AnandG '$ (' # output '). Text (ProperDate);' должен печатать определенную дату в зависимости от сегодняшней даты, но ничего не распечатывает. document.getElementById ("demo"). innerHTML = someDate; печатает дату, в которую пользователь ввел. –

ответ

1

В основном вы делаете

var ProperDate = Month+"/"+Date+"/"+Year; 

ProperDate.setDate(ProperDate.getDate() + numberOfDaysToAdd); 

но ProperDate не является объектом дата, это строка, вы должны создать объект даты, а не строка , если вы хотите использовать методы даты

$('#dSuggest').on("input", function() { 
    var dInput = this.value; 
    var Month = dInput.substring(5, 7); 
    var Date = dInput.substring(8, 10); 
    var Year = dInput.substring(0, 4); 

    var ProperDate = new Date(Year, Month-1, Date); 
    var endDate = new Date(2016, 0, 31); 

    $('#output').text(Month + "/" + Date + "/" + Year;); 

    var StartDate = new Date(); 

    if (StartDate > endDate) { 
     var numberOfDaysToAdd = 365; 
    } else { 
     var numberOfDaysToAdd = n; 
    } 
    ProperDate.setDate(ProperDate.getDate() + numberOfDaysToAdd); 
    document.getElementById("demo").innerHTML = properDate; 
}); 
+1

Следует также отметить, что 'toLocaleDateString' является USER-SPECIFIC-форматом, и выполнение сравнений на его основе не будет работать для всех. –

+0

@NiettheDarkAbsol - это правда, 'StartDate' не следует преобразовывать в строку – adeneo

+0

Также через несколько лет вам нужно добавить 366 дней? Я не уверен, что цель упражнения здесь. – mplungjan

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