Текущая дата преобразована в 10 дней до и 10 дней после
У меня есть этот код, в котором я конвертирую текущую дату в этот формат 2020-08-20
. Но как мне изменить это, чтобы дать мне дату 10 дней from
сегодня и 10 дней before
сегодня.
например, сегодня 2020-08-20
я пытаюсь получить 10 дней с сегодняшнего дня2020-08-30
Это мой код
const dateConverter = (dateIn) => {
var year = dateIn.getFullYear();
var month = dateIn.getMonth() + 1; // getMonth() is zero-based
var day = dateIn.getDate();
return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
var today = new Date();
console.log(dateConverter(today));
Ответы
Это немного сложно. Сначала установите часы с даты на 12, чтобы избежать проблем с переходом на летнее / зимнее время. Затем getDate
добавьте 10 для дополнительных дней и setDate
с новым значением. Теперь у вас есть значение в миллисекундах, сгенерируйте из него новую дату, чтобы получить объект даты. Для второй даты вычтите 20 дней, потому что исходная дата была изменена предыдущим действием, и сделайте все остальное так же.
Отформатируйте вывод для дат с помощью getFullYear
, getMonth
и getDate
. Поскольку месяц обрабатывается в JS, от 0 до 11 добавьте 1 месяц. Месяцы и дни могут быть 1-значными, но вы хотите, чтобы они были 2-значными, поэтому добавьте перед строкой "0"
и получите последние 2 символа с помощью slice
.
Выполните формат для обеих дат и верните их как массив.
const dateConverter = (dateIn) => {
dateIn.setHours(12);
let dateIn10days = new Date(dateIn.setDate(dateIn.getDate() + 10));
let dateFor10days = new Date(dateIn.setDate(dateIn.getDate() - 20));
let strIn10Days = dateIn10days.getFullYear() + '-' + ('0' +(dateIn10days.getMonth()+1)).slice(-2) + '-' + ('0' + dateIn10days.getDate()).slice(-2);
let strFor10Days = dateFor10days.getFullYear() + '-' + ('0' +(dateFor10days.getMonth()+1)).slice(-2) + '-' + ('0' + dateFor10days.getDate()).slice(-2);
return [strFor10Days, strIn10Days];
}
let today = new Date();
console.log(dateConverter(today));
Этот код поможет вам
Ссылка JavaScript вычисляет дату с сегодняшней даты до 7 дней до
через 10 дней просто преобразуйте - в +
const dateConverter = (dateIn) => {
var dates ={};
var days = 10; // Days you want to subtract
for(let i=0;i<days;i++){
var date = dateIn;
var last = new Date(date.getTime() - (i * 24 * 60 * 60 * 1000));
var day = last.getDate();
var month= last.getMonth()+1;
var year= last.getFullYear();
dates[i] = year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
return dates
}
var today = new Date();
console.log(dateConverter(today));
Попробуй это
const dateConverter = (dateIn) => {
var year = dateIn.getFullYear();
var month = dateIn.getMonth() + 1; // getMonth() is zero-based
var day = dateIn.getDate();
return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
var today = new Date();
var numberOfDaysToAdd = 10;
var tenDaysPlus = today.setDate(today.getDate() + numberOfDaysToAdd);
console.log(dateConverter(today));
var today = new Date();
var numberOfDaysToSubtract = 10;
var tenDaysMinus = today.setDate(today.getDate() - numberOfDaysToSubtract);
console.log(dateConverter(today));
Я бы посоветовал вам использовать библиотеку моментов, но вам по-прежнему нужен простой javascript
const convert = (date) => {
const pastDate = new Date(date)
pastDate.setDate(pastDate.getDate() - 10);
const futureDate = new Date(date)
futureDate.setDate(futureDate.getDate() + 10);
return { pastDate, futureDate }
}
вызвать функцию преобразования с любой датой.
Я тоже возился с этим раньше. Но в этом Stack Overflow вы можете найти действительно хороший ответ: добавить дни в дату JavaScript.
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
alert(date.addDays(5));
Это код, взятый из того сообщения.
Чтобы вычесть дни, просто замените «+ дни» на «- дни».
Надеюсь, это решило вашу проблему!
Вы можете преобразовать все даты в, timestamp
а затем просто рассчитать с ними:
const dateTimestamp = new Date("2020-10-10").getTime()
const milisecondsInADay = 60*60*24*1000
const milisecondsInTenDays = milisecondsInADay * 10
const beforeDate = new Date(dateTimestamp - milisecondsInTenDays)
const afterDate = new Date(dateTimestamp + milisecondsInTenDays)
console.log("before", beforeDate)
console.log("after", afterDate)
console.log("initially", new Date(dateTimestamp))