JSFiddle - React, Tailwind, and code Playground
by robgallen
HTML
<script src="https://rawgit.com/moment/moment/develop/min/moment-with-locales.min.js"></script>
<script src="https://rawgit.com/robgallen/moment-fquarter/master/moment-fquarter.min.js"></script>
<div id="output">
</div>
JavaScript
var m = moment("2017-07-03");
var q = m.fquarter(); // Q2 2017/19
var currentQuarter = q.quarter;
function logit(msg) {
var output = document.getElementById("output");
output.innerHTML += msg + "<br/>";
}
logit("Date now: " + m.format("L"));
// work out next quarter, got to be sometime in the next 3 months
for (var i = 1; i <= 3; i++) {
var increment = m.clone().add(i, "months"); // do not affect the original moment
var incrementQuarter = increment.fquarter();
if (incrementQuarter.quarter !== currentQuarter) {
logit("Next quarter: " + incrementQuarter.toString());
// pare down the date to the minimum
var soonestDate = { y: increment.year(), M: increment.month(), d: 1 };
var soonestMoment = moment(soonestDate);
logit("Soonest date: " + soonestMoment.format("L"));
// what's the difference?
var difference = soonestMoment.diff(m, 'days');
logit("Next quarter in " + difference + " days");
break;
}
}