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.