2016-09-01 7 views
24

はどうすればmoment.jsで次の形式で現在の月の最初と最後の日と時間を得るのです:モーメントJS現在の月の最初と最後の日を取得し

2016年9月1日00: 00

私はこのような現在の日付と時刻を取得することができます: moment().format('YYYY-MM-DD h:m')れます上記のフォーマットで出力。

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

EDIT: それは私がある日の特定の形式を尋ねるとともに現在月を求めています一方、ユーザーがすでに持っていることを指定した月を要求するので、私の質問はthis 1と異なっています他のいわゆる「複写」には言及されていない。

+2

[Moment JSの開始日と終了日]の複製が可能です(http://stackoverflow.com/questions/26131003/moment-js-start-and-end-of-given-month) –

+0

Moment.js月の最初と最後の日を取得する機能をサポートするあなたは、現在の月のそれを、moment()。startOf( 'month')とmoment()。endOf( 'month')で得ることができます。 あなたは[this](http://stackoverflow.com/questions/26131003/moment-js-start-and-end-of-given-month)から回答を見るべきだと思います –

+0

@TanLeはい、これは'Thu Sep 01 2016 00:00:00 GMT + 0100(GMTサマータイム)'私の質問で言及したようなフォーマットが欲しい – user3574492

答えて

18

あなたは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); 
+0

これは、デフォルトの日付形式 'Thu Sep 01 2016 00:00:00 GMT + 0100(GMTサマータイム)'の出力形式ではありません: '2016-09-01 00:00' – user3574492

+0

モーメントをフォーマットする日付... firstDay =瞬間(firstDay)。形式( 'MM/DD/YYYY'); lastDay =瞬間(lastDay)。形式( 'MM/DD/YYYY'); –

+0

私は最後にmoment.jsを使う必要がありました:これはトリックに – user3574492

4

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

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

これはちょうど過剰です – user3574492

12

これを行うための別の方法があるでしょう:

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

、誰もが元の質問にコメントを逃した場合、あなたはメソッド(モーメント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

これは受け入れられる答えであるべきです – sarink

+0

@ sarinkこの回答はこの質問が投稿されてから7ヶ月後に掲載されました。だからええ、それは受け入れられた答えではない、 – user3574492

関連する問題