MomentJS – Hoe haal ik de laatste dag van de vorige maand van de datum?

Ik probeer de laatste dag van de vorige maand te krijgen met:

var dateFrom = moment(dateFrom).subtract(1, 'months').format('YYYY-MM-DD');

Waar:

dateFrom = 2014-11-30 

Maar na het gebruik van

subtract(1, 'months')

het geeft de datum terug

DATE_FROM: "2014-10-30"

Maar de laatste dag van de 10e maand is 31.

Hoe kan ik dit alstublieft oplossen?

Hartelijk dank voor alle hulp.


Antwoord 1, autoriteit 100%

Voeg eenvoudig een endOf('month')toe aan uw oproepen:

var dateFrom = moment(dateFrom).subtract(1,'months').endOf('month').format('YYYY-MM-DD');

http://jsfiddle.net/r42jg/327/


Antwoord 2, autoriteit 5%

Een nog eenvoudigere oplossing zou zijn om moment.date(0)te gebruiken. de functie .date()neemt de 1 tot n dag van de huidige maand, maar het doorgeven van een nul of een negatief getal levert een datum in de vorige maand op.

Bijvoorbeeld als de huidige datum 3 februari is:

var _date = moment(); // 2018-02-03 (current day)
var _date2 = moment().date(0) // 2018-01-31 (start of current month minus 1 day)
var _date3 = moment().date(4) // 2018-02-04 (4th day of current month)
var _date4 = moment().date(-4) // 2018-01-27 (start of current month minus 5 days)
console.log(_date.format("YYYY-MM-DD"));
console.log(_date2.format("YYYY-MM-DD"));
console.log(_date3.format("YYYY-MM-DD"));
console.log(_date4.format("YYYY-MM-DD"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.js"></script>

Snippet uitvouwen


Antwoord 3, autoriteit 3%

De eerste datum van vorige maand en de laatste datum van vorige maand vanaf de huidige datumbasis. Het formaat van de datum verandert afhankelijk van. (DD-MM-JJJJ)

console.log("last month first date");
   const lastmonthlastdate=moment().subtract(1, 'months').startOf('month').format('DD-MM-YYYY')
console.log(lastmonthlastdate);
console.log("lastmonth last date");
   const lastmonthfirstdate=moment().subtract(1, 'months').endOf('month').format('DD-MM-YYYY')
console.log(lastmonthfirstdate);

Antwoord 4

Je kunt de eerste dag van de maand nemen en dan 1 dag aftrekken om de laatste dag van de vorige maand te krijgen.

const monthyear = moment().format('YYYY-MM')
const firstDay = moment(monthyear + "-01").format("YYYY-MM-DD");
// Subtract 1 day to get the end of the previous month
const dateTo = moment(firstDay).subtract('1', 'days').format("YYYY-MM-DD");

Other episodes