Trying to subtract 7 days from date using moment.js. But, invalid date in the console. I'm first consoling the date in the span element with data-date attribute then creating a new variable and assigning it the data minus 7. My end goal is to add an event handler to a button to only display dates that are within the last 7 days. Codepen: https://codepen.io/centem/pen/ExYEoLj
var dataset = [
{date: "2019-04-15T15:10:45Z", number: 76},
{date: "2019-02-12T11:21:10Z", number: 23},
{date: "2019-01-12T10:20:16Z", number: 14},
{date: "2019-01-09T09:20:16Z", number: 7},
{date: "2019-07-11T11:01:05Z", number: 101},
{date: "2019-08-29T11:01:05Z", number: 121},
{date: "2019-09-03T14:31:05Z", number: 130},
{date: "2019-09-10T11:01:05Z", number: 135},
{date: "2019-09-11T14:01:05Z", number: 140},
{date: "2019-09-01T11:01:05Z", number: 115}
];
var options = {
valueNames : ['date', 'number', 'filter']
};
var ResultDiv = new List('ResultDiv', options);
for(let node of document.querySelectorAll('[data-date]')){
let d = moment(new Date(node.dataset.date)).format("MMM Do YYYY hh:mm:ss");
//node.innerText = moment(new Date(node.dataset.date)).format("MMM Do YYYY hh:mm:ss");
node.innerText = d;
//console.log(node.innerText);
}
//moment().subtract(7, 'days');
//var d = new Date();
//var d2 = new Date();
//var d2 = d2.setDate( d.getDate() - 10 );
//d = moment(d).format("MMM Do YYYY hh:mm:ss");
//document.write( d )
//document.write("<br>");
//d2 = moment(d2).format("MMM Do YYYY hh:mm:ss");
//document.write( d2 );
function formatDate(d) {
return moment(d).format("MMM Do YYYY hh:mm:ss");
}
/*
function addElements() {
let ul = document.getElementById("ul");
for (let i = 0; i < dataset.length; i++) {
let li = document.createElement("li");
let outerDateSpan = document.createElement("span");
let innerDateSpan = document.createElement("span");
let numberSpan = document.createElement("span");
let d = formatDate(dataset[i].date);
innerDateSpan.setAttribute("data-date", d);
innerDateSpan.classList.add("date");
innerDateSpan.innerHTML = d;
numberSpan.classList.add("number");
numberSpan.innerHTML = dataset[i].number;
outerDateSpan.appendChild(innerDateSpan);
li.appendChild(outerDateSpan);
li.appendChild(numberSpan);
ul.appendChild(li);
}
}
*/
//addElements();
function last7() {
for(let node of document.querySelectorAll('[data-date]')){
console.log("***********************************");
let d = node.innerText;
console.log(d);
let d2 = moment(d).subtract(7, 'days');
console.log(d2);
//console.log( moment(node.innerText).subtract(7, 'days') );
}
}
last7();
ul {
list-style-type: none;
padding-left: 0;
margin-left: 0;
}
span {
margin-right: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/list.js/1.5.0/list.min.js"></script>
<div id="ResultDiv">
<input class="search" placeholder="Search"/>
<button class="sort" data-sort="date">
Sort by Date
</button>
<button class="sort" data-sort="number">
Sort by Number
</button>
<button>Last 7 Days</button>
<button>Last 30 Days</button>
<ul class="list" id="ul">
<li>
<span class="date"><span data-date="2019-04-15T15:10:45Z"></span>
</span>
<span class="number">76</span>
</li>
<li>
<span class="date"><span data-date="2019-02-12T11:21:10Z"></span></span>
<span class="number">23</span>
</li>
<li>
<span class="date"><span data-date="2019-01-12T10:20:16Z"></span></span>
<span class="number">14</span>
</li>
<li>
<span class="date"><span data-date="2019-01-09T09:20:16Z"></span></span>
<span class="number">7</span>
</li>
<li>
<span class="date"><span data-date="2019-07-11T11:01:05Z"></span></span>
<span class="number">101</span>
</li>
<li>
<span class="date"><span data-date="2019-08-29T11:01:05Z"></span></span>
<span class="number">121</span>
</li>
<li>
<span class="date"><span data-date="2019-09-03T14:31:05Z"></span></span>
<span class="number">130</span>
</li>
<li>
<span class="date"><span data-date="2019-09-10T11:01:05Z"></span></span>
<span class="number">130</span>
</li>
</ul>
</div>