Moment js pobiera pierwszy i ostatni dzień bieżącego miesiąca

137

Jak uzyskać pierwszy i ostatni dzień i godzinę bieżącego miesiąca w następującym formacie w pliku moment.js:

01.09.2016 00:00

Mogę uzyskać aktualną datę i godzinę w ten sposób: moment().format('YYYY-MM-DD h:m')która wyświetli się w powyższym formacie.

Jednak muszę uzyskać datę i godzinę pierwszego i ostatniego dnia bieżącego miesiąca, jak to zrobić?

EDYCJA: Moje pytanie różni się od tego, ponieważ pyta o dany miesiąc, który użytkownik już ma, natomiast proszę o bieżący miesiąc wraz z prośbą o konkretny format daty, który nie jest wymieniony w drugim tzw. Duplikacie ”.

user3574492
źródło
2
Możliwy duplikat początku i końca Moment JS podanego miesiąca
Audite Marlow
1
Moment.js obsługuje funkcję pobierania pierwszego i ostatniego dnia miesiąca, możesz to pobrać dla bieżącego miesiąca przez: moment (). StartOf ('miesiąc') i moment (). EndOf ('miesiąc'). Myślę, że powinieneś zobaczyć odpowiedź z tego
Tan Le
@TanLe Tak, ale to wyświetla w następującym formacie: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)Chcę format, jak wspomniałem w moim pytaniu
user3574492
Ta funkcja zwraca obiekt momentu dla dnia, więc możesz użyć formatu do wyprowadzenia w dowolnym formacie. Na przykład: moment (). StartOf ('miesiąc'). Format ('RRRR-MM-DD GG: mm').
Tan Le
@AuditeMarlow Niezła próba, ale pytania są nieco inne, jak wyjaśniono w mojej edycji.
user3574492

Odpowiedzi:

370

Jeśli ktoś przeoczył komentarze do pierwotnego pytania, możesz użyć wbudowanych metod (działa od Moment 1.7):

const startOfMonth = moment().startOf('month').format('YYYY-MM-DD hh:mm');
const endOfMonth   = moment().endOf('month').format('YYYY-MM-DD hh:mm');
Ali Yazdani
źródło
1
Nie wiem, dlaczego ktoś usunął oryginalne komentarze, ale powodem, dla którego nie była to zaakceptowana odpowiedź, było to, że została opublikowana wiele miesięcy po zaakceptowanej odpowiedzi.
user3574492
2
dzięki @ user3574492 nic wielkiego, dziękuję za wyjaśnienie - jeśli uważasz, że ta odpowiedź jest najlepsza, myślę, że można ją zmienić na zaakceptowaną, nawet jeśli została opublikowana później.
Ali Yazdani
3
moment(1, "DD");zwróci pierwszy dzień bieżącego miesiąca
Anil Vangari
35

Byłby na to inny sposób:

var begin = moment().format("YYYY-MM-01");
var end = moment().format("YYYY-MM-") + moment().daysInMonth();
Akoya
źródło
27

Możesz to zrobić bez pliku moment.js.

Sposób na zrobienie tego w natywnym kodzie JavaScript:

var date = new Date(), y = date.getFullYear(), m = date.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);

firstDay = moment(firstDay).format(yourFormat);
lastDay = moment(lastDay).format(yourFormat);
Kevin Grosgojat
źródło
Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)2016-09-01 00:00
Wyprowadza
1
Użyj momentu, aby sformatować datę ... firstDay = moment (firstDay) .format ('MM / DD / RRRR'); lastDay = moment (lastDay) .format ('MM / DD / RRRR');
Kevin Grosgojat
1
i jak uzyskać startdatei enddateprzyszłego miesiąca używając tego wzoru?
alka vaghela
28
„Możesz to zrobić bez moment.js” wykorzystuje moment.js do formatowania daty ...
SteamFire,
10

Zakładając, że do pobierania dat używasz selektora zakresu dat. Możesz zrobić coś takiego, jak dostać to, czego chcesz.

$('#daterange-btn').daterangepicker({
            ranges: {
                'Today': [moment(), moment()],
                'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                'Last 7 Days': [moment().subtract(6, 'days'), moment()],
                'Last 30 Days': [moment().subtract(29, 'days'), moment()],
                'This Month': [moment().startOf('month'), moment().endOf('month')],
                'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
            },
            startDate: moment().subtract(29, 'days'),
            endDate: moment()
        }, function (start, end) {
      alert( 'Date is between' + start.format('YYYY-MM-DD h:m') + 'and' + end.format('YYYY-MM-DD h:m')}
Alexander Nana Owusu
źródło
9

moment startOf () i endOf () to odpowiedź, której szukasz. Na przykład: -

moment().startOf('year');    // set to January 1st, 12:00 am this year
moment().startOf('month');   // set to the first of this month, 12:00 am
moment().startOf('week');    // set to the first day of this week, 12:00 am
moment().startOf('day');     // set to 12:00 am today
ifelse.codes
źródło
1

Pierwsza i ostatnia data bieżącego miesiąca W chwili.js

console.log("current month first date");
    const firstdate = moment().startOf('month').format('DD-MM-YYYY');
console.log(firstdate);

console.log("current month last date");
    const lastdate=moment().endOf('month').format("DD-MM-YYYY"); 
console.log(lastdate); 
Jojo Joseph
źródło
1

Tak prosto możemy użyć daysInMonth () i endOf ()

const firstDay = moment('2016-09-15 00:00', 'YYYY-MM-DD h:m').startOf('month').format('D')
const lastDay = moment('2016-09-15 00:00', 'YYYY-MM-DD h:m').endOf('month').format('D')
Pon.
źródło