Считать количество дней от сегодня до даты которую выбрал?
Хотел бы спросить какая у меня ошибка (но я не вижу ошибок в консоле) в моему подходу написания кода. Моя задача состоит в том, а именно: считать количество дней от сегодня до даты которую выбрал
var data1=new Date();
new Vue({
el: "#data-tag",
data: {
dataend: " ",
datastart: " ",
deadline: " ",
milliseconds: "",
seconds: "",
minutes: "",
hours: "",
days: ""
},
methods: {
Deadline() {
this.datastart= new Date();
this.deadline=Math.abs(this.dataend-this.datastart);
this.milliseconds = this.deadline;
this.seconds = this.milliseconds / 1000;
this.minutes = this.seconds / 60;
this.hours = this.minutes / 60;
this.days = this.hours / 24;
this.days=Math.ceil(days);
console.log(this.days);
}
}
})
<div id="data-tag">
<input type="date" placeholder="дата окончания" v-model="dataend">
<div> {{days}}</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
Ответы (2 шт):
Автор решения: Sergey Tatarincev
→ Ссылка
вы сильно усложняете.
Date.daysBetween = function( date1, date2 ) {
//Get 1 day in milliseconds
var one_day=1000*60*60*24;
// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();
// Calculate the difference in milliseconds
var difference_ms = date2_ms - date1_ms;
// Convert back to days and return
return Math.round(difference_ms/one_day);
}
Автор решения: Eugene Kuznetsov
→ Ссылка
Вам не нужно столько свойств в data() для выполнения этой цели. И в вашем скрипте вы по сути не запускали метод подсчета, в случае, который я привел ниже запускается метод при изменении свойства "dataend" , в watch я это отслеживаю и запускаю метод. Ниже прикрепил рабочий пример.
P.S. при присваивании "this.days = abs/msPerDay" можете округлить значения при помощи Math.round/ceil, как душе угодно)
new Vue({
el: "#data-tag",
data: {
dataend: '',
days: '',
},
watch: {
dataend(){
this.deadline();
}
},
methods: {
deadline() {
const msPerDay = 8.64 * Math.pow(10, 7);
const abs = Math.abs(Date.parse(this.dataend) - Date.now());
this.days = abs/msPerDay;
}
}
})
<html>
<body>
<div id="data-tag">
<input type="date" placeholder="дата окончания" v-model="dataend">
<div> {{days}}</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</body>
</html>