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 ”.



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');

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();

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);

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')}

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

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); 

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')
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.