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



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

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

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

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

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

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

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')
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.