Поскольку на этот пост еще не принято ответа, я собрал некоторые аспекты, упомянутые в комментариях, и собрал их в рабочую скрипку. Пожалуйста, не обижайтесь, если вам кажется, что я похитил ваш вклад.
Единственным моментом, который мне оставался неясным, было происхождение даты. Может быть, это только одна дата (текущая) ОП хочет вычесть из? Для этого потребуется только одно преобразование / вычитание. С другой стороны, возможно OP хочет, чтобы вычитание было выполнено для ряда "входных ячеек"? В следующем примере я добавил HTML-код к вопросу, в котором я предоставляю входные даты в столбце, предшествующем целевым ячейкам с классом «четыре дня назад».
Скрипт перебирает все целевые ячейки и заполняетих с датами за 4 дня до дат, указанных в колонке до этого.
Поскольку год не указан в столбце даты, его, тем не менее, необходимо определить. Год становится важным из-за последствий високосного года. В моем примере я предполагаю, что текущий год применяется.
[[Этот ответ "Vanilla-JS", используя обозначение стрелки ES2015 и элемент ES2017 String.prototype.padStart()
. Поэтому он не будет работать в браузерах IE. Он должен быть адаптирован для работы в этих браузерах. ]]
var y = new Date().getFullYear();
[...document.querySelectorAll('.four-days-back')].forEach(el=>{
var md=el.previousElementSibling.innerText.split('/');
var mm,dd;
var dt=new Date(y,md[0]-1,md[1]-4,12);
el.innerText=(dt.getMonth()+1+'').padStart(2,'0')
+'/'+(dt.getDate()+'').padStart(2,'0')
});
<table>
<tr><th>topic</th><th>date</th><th>4 days before</th></tr>
<tr><td>one</td><td>03/02</td><td class="four-days-back"></td></tr>
<tr><td>two</td><td>08/14</td><td class="four-days-back"></td></tr>
<tr><td>three</td><td>09/03</td><td class="four-days-back"></td></tr>
<tr><td>four</td><td>10/01</td><td class="four-days-back"></td></tr>
</table>
Может быть, строка var dt=new Date(y,md[0]-1,md[1]-4,12);
заслуживает некоторого объяснения? Я установил дату в значения года, месяца, даты и часа. Год - это значения текущего года, месяца и даты, которые я взял из предыдущего столбца (обратите внимание, что нумерация месяцев в JavaScript начинается с 0), и я использую значение часа, равное 12, чтобы избежать каких-либо «проблем с переходом на летнее время».