Текущая дата преобразована в 10 дней до и 10 дней после

Aug 19 2020

У меня есть этот код, в котором я конвертирую текущую дату в этот формат 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));

Ответы

2 Sascha Aug 19 2020 at 21:55

Это немного сложно. Сначала установите часы с даты на 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));

2 Hasan_Naser Aug 19 2020 at 21:51

Этот код поможет вам

Ссылка 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));
       

1 Chilarai Aug 19 2020 at 21:41

Попробуй это

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));
1 Ashok Aug 19 2020 at 21:47

Я бы посоветовал вам использовать библиотеку моментов, но вам по-прежнему нужен простой 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 } 
}

вызвать функцию преобразования с любой датой.

ThaekeHekkenberg Aug 19 2020 at 21:40

Я тоже возился с этим раньше. Но в этом 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));

Это код, взятый из того сообщения.

Чтобы вычесть дни, просто замените «+ дни» на «- дни».

Надеюсь, это решило вашу проблему!

messerbill Aug 19 2020 at 21:42

Вы можете преобразовать все даты в, 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))