モーメントjsは現在の月の最初と最後の日を取得します


138

今月の最初と最後の日と時刻をmoment.jsで次の形式で取得するにはどうすればよいですか。

2016-09-01 00:00

次のように現在の日付と時刻を取得でき moment().format('YYYY-MM-DD h:m')ます。上記の形式で出力されます。

しかし、今月の最初と最後の日付と時刻を取得する必要があります。これを行う方法はありますか?

EDIT: 私の質問は異なっている。このことは、与えられた月を要求するので、私が求めています一方、ユーザーが既に持っていることを1 現在の重複」、いわゆる他に言及されていない日付の特定の形式を尋ねると一緒に月'。



1
Moment.jsは、月の最初と最後の日を取得する関数をサポートしています。次のようにして、現在の月の値を取得できます:moment()。startOf( 'month')とmoment()。endOf( 'month')。私はあなたからの回答を見るべきだと思います。この
タン・ル

@TanLeはい、ただし次の形式で出力されます。Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)質問で述べたとおりの形式が欲しい
user3574492

この関数は1日のモーメントオブジェクトを返すため、formatを使用して、任意の形式で出力できます。例:moment()。startOf( 'month')。format( 'YYYY-MM-DD HH:mm')。
Tan Le

@AuditeMarlow素敵な試みですが、私の編集で説明されているように、質問は少し異なります。
user3574492 2016

回答:


371

元の質問のコメントを見逃した場合は、組み込みのメソッドを使用できます(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
なぜ誰かが元のコメントを削除したのかわからないが、これが承認された回答でなかった理由は、承認された回答の数か月後に投稿されたためでした。
user3574492

2
@ user3574492のおかげで、大したことではありませんでした。明確化に感謝します-この回答が最良であると思われる場合は、後で投稿した場合でも、承認された回答に変更することは可能だと思います。
Ali Yazdani、

3
moment(1, "DD");今月の最初の日が返されます
Anil Vangari

35

これを行う別の方法があります:

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

27

あなたはmoment.jsなしでこれを行うことができます

これをネイティブ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
user3574492

1
日付をフォーマットするには、モーメントを使用してください... firstDay = moment(firstDay).format( 'MM / DD / YYYY'); lastDay = moment(lastDay).format( 'MM / DD / YYYY');
Kevin Grosgojat 2016

1
そして取得する方法startdateenddate、この式を使用して、来月の?
アルカバゲラ

28
「moment.jsなしでこれを実行できます」は、moment.jsを使用して日付をフォーマットします...
SteamFire

10

日付範囲ピッカーを使用して日付を取得するとします。あなたはあなたが望むものを得るために何かのようなことをすることができます。

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

瞬間startOf()endOf()は、あなたが探している答えです。例:-

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

当月の最初と最後の日付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

単純なものとして、daysInMonth()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')
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.