2016-09-01 14 views
24

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

2016-09-01 00: 00

mogę uzyskać bieżącą datę i czas takiego: moment().format('YYYY-MM-DD h:m') który wyświetli w powyższym formacie.

Jednak muszę uzyskać datę i godzinę pierwszego i ostatniego dnia bieżącego miesiąca, w jaki sposób?

EDIT: Moje pytanie jest różna od this jednego bo prosi o danym miesiącu, że użytkownik ma już natomiast pytam dla bieżącym miesiąca wraz z prośbą o określonym formacie daty, która jest nie wymienione w drugim tak zwanym "duplikacie".

+2

Możliwy duplikat [Moment JS początek i koniec danego miesiąca] (http://stackoverflow.com/questions/26131003/moment-js-start-and-end-of-given-miesiąc) –

+0

Moment.js obsługuje funkcję, aby uzyskać pierwszy i ostatni dzień miesiąca , możesz to uzyskać dla bieżącego miesiąca przez: moment(). startOf ("miesiąc") i moment(). endOf ("miesiąc"). Myślę, że powinieneś zobaczyć odpowiedź z [this] (http://stackoverflow.com/questions/26131003/moment-js-start-and-end-of-given-miesiąc) –

+0

@TanLe Tak, ale to wyjście w następujący format: 'Czw Sep 01 2016 00:00:00 GMT + 0100 (GMT Summer Time)' Chcę format jak wspomniałem w moim pytaniu – user3574492

Odpowiedz

18

Można to zrobić bez moment.js

sposób zrobić to 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); 
+0

Powoduje wyświetlenie domyślnego formatu daty Czw 01 2016 00:00:00 GMT + 0100 (GMT Summer Time) 'nie w formacie Chcę tego:' 2016-09-01 00: 00' – user3574492

+0

Użyj momentu, aby sformatować data ... firstDay = moment (firstDay) .format ("MM/DD/YYYY"); lastDay = moment (lastDay) .format ("MM/DD/YYYY"); –

+0

Więc musiałem użyć pliku moment.js na końcu: p to zrobiło sztuczkę dzięki – user3574492

4

Zakładając używasz Picker zakres dat do pobierania daty. Możesz zrobić coś, aby uzyskać 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')} 
+3

To tylko przesada – user3574492

12

Nie byłoby kolejnym sposobem, aby to zrobić:

var begin = moment().format("YYYY-MM-01"); 
var end = moment().format("YYYY-MM-") + moment().daysInMonth(); 
58

W przypadku ktoś brakowało komentarze na oryginalne pytanie, można korzystać z wbudowanych w zakresie metod (działa jak z chwilą 1.7):

const startOfMonth = moment().startOf('month').format('YYYY-MM-DD hh:mm'); 
const endOfMonth = moment().endOf('month').format('YYYY-MM-DD hh:mm'); 
+6

Powinna to być zaakceptowana odpowiedź – sarink

+0

@sarink Ta odpowiedź została wysłana w 7 miesięcy po opublikowaniu tego pytania. Więc tak, to nie jest akceptowana odpowiedź, – user3574492

Powiązane problemy