Momen js dapatkan hari pertama dan terakhir bulan ini

138

Bagaimana cara mendapatkan hari dan waktu pertama dan terakhir bulan ini dalam format berikut di moment.js:

2016-09-01 00:00

Saya bisa mendapatkan tanggal dan waktu saat ini seperti ini: moment().format('YYYY-MM-DD h:m')yang akan ditampilkan dalam format di atas.

Namun saya perlu mendapatkan tanggal dan waktu hari pertama dan terakhir bulan ini, apakah ada cara untuk melakukan ini?

EDIT: Pertanyaan saya berbeda dari yang ini karena itu meminta bulan tertentu yang sudah dimiliki pengguna sedangkan saya meminta bulan saat ini bersamaan dengan meminta format tanggal tertentu yang tidak disebutkan di yang lain yang disebut 'duplikat' '

pengguna3574492
sumber
2
Kemungkinan duplikat Momen JS mulai dan akhir bulan yang diberikan
Audite Marlow
1
Moment.js mendukung fungsi untuk mendapatkan hari pertama dan terakhir bulan, Anda bisa mendapatkannya untuk bulan berjalan dengan: moment (). StartOf ('month') dan moment (). EndOf ('month'). Saya pikir Anda harus melihat jawabannya dari ini
Tan Le
@TanLe Ya tapi ini menghasilkan format berikut: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)Saya ingin format seperti yang saya sebutkan dalam pertanyaan saya
user3574492
Fungsi itu mengembalikan objek momen untuk hari, sehingga Anda dapat menggunakan format untuk menghasilkan dengan format apa pun yang Anda inginkan. Seperti: moment (). StartOf ('bulan'). Format ('YYYY-MM-DD HH: mm').
Tan Le
@ AuditeMarlow Bagus mencoba tetapi pertanyaannya sedikit berbeda seperti yang dijelaskan dalam edit saya.
user3574492

Jawaban:

371

Jika ada orang yang melewatkan komentar pada pertanyaan asli, Anda dapat menggunakan metode bawaan (berfungsi pada Momen 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
sumber
1
Tidak tahu mengapa seseorang menghapus komentar asli tetapi alasan ini bukan jawaban yang diterima adalah karena diposting beberapa bulan setelah jawaban diterima.
user3574492
2
terima kasih @ user3574492 bukan masalah besar, terima kasih untuk klarifikasi - jika Anda berpikir jawaban ini adalah yang terbaik maka saya pikir mungkin untuk mengubahnya ke jawaban yang diterima, bahkan jika itu diposting kemudian.
Ali Yazdani
3
moment(1, "DD");akan kembali hari pertama bulan ini
Anil Vangari
35

Akan ada cara lain untuk melakukan ini:

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

Anda dapat melakukan ini tanpa moment.js

Cara untuk melakukan ini dalam kode Javascript asli:

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
sumber
Ini menghasilkan dalam format tanggal default Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)bukan dalam format yang saya inginkan:2016-09-01 00:00
user3574492
1
Gunakan momen untuk memformat tanggal ... firstDay = moment (firstDay) .format ('MM / DD / YYYY'); lastDay = moment (lastDay) .format ('MM / DD / YYYY');
Kevin Grosgojat
1
dan bagaimana cara mendapatkan startdatedan enddatebulan depan menggunakan formula ini?
alka vaghela
28
"Anda dapat melakukan ini tanpa moment.js" menggunakan moment.js untuk memformat tanggal ...
SteamFire
10

Dengan asumsi Anda menggunakan pemilih rentang tanggal untuk mengambil tanggal. Anda dapat melakukan sesuatu seperti untuk mendapatkan apa yang Anda inginkan.

$('#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
sumber
9

moment startOf () dan endOf () adalah jawaban yang Anda cari .. Sebagai Contoh: -

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
kode ifelse
sumber
1

Tanggal Pertama dan Terakhir dari Bulan ini Dalam moment.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
sumber
1

Sesederhana kita dapat menggunakan daysInMonth () dan 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')
Mo.
sumber