Javascript ИЛИ JQuery Как вычесть дни по INT в формате MM / DD? - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь вычесть дни постоянным целым числом в формате MM / DD. Вот мой текущий код в javascript.

   var d = new Date();
    var n = d.getDate();
    var m = d.getMonth() +1;


    var q = document.getElementsByClassName('four-days-back');
    for(var i =0; i<q.length; i++){
    var o =4;
    var z = d.setDate(d.getDate()-o);
    q[i].innerHTML = m + "/" + z;
    }

вывод: 11 / 1572387207470.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Поскольку на этот пост еще не принято ответа, я собрал некоторые аспекты, упомянутые в комментариях, и собрал их в рабочую скрипку. Пожалуйста, не обижайтесь, если вам кажется, что я похитил ваш вклад.

Единственным моментом, который мне оставался неясным, было происхождение даты. Может быть, это только одна дата (текущая) ОП хочет вычесть из? Для этого потребуется только одно преобразование / вычитание. С другой стороны, возможно 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, чтобы избежать каких-либо «проблем с переходом на летнее время».

0 голосов
/ 03 ноября 2019

Не Javascript или Jquery, но PHP может быть полезным.

например

<?php
$one = strtotime("-4 days");
echo "<td>".date("m/d", $one)."</td>"
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...