Момент js отримують перший і останній день поточного місяця


140

Як отримати перший та останній день та час поточного місяця у такому форматі у moment.js:

2016-09-01 00:00

Я можу отримати поточну дату та час так: moment().format('YYYY-MM-DD h:m')які будуть виводитись у наведеному вище форматі.

Однак мені потрібно отримати дату та час першого та останнього дня поточного місяця, будь-яким способом це зробити?

EDIT: Моє запитання відрізняється від цього, тому що він запитує протягом місяця, який у користувача вже є, тоді як я прошу поточного місяця разом із запитом у конкретному форматі дати, який не згадується в іншому, так званому "дублікаті" '.



1
Moment.js підтримує функцію отримання першого та останнього дня місяця, ви можете отримати його для поточного місяця за: moment (), startOf ('month') та moment (). EndOf ('month'). Я думаю, вам слід переглянути відповідь з цього
— Тан Ле

@TanLe Так, але це виводиться у такому форматі: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)я хочу, щоб формат, як я згадував у своєму запитанні,
— користувач3574492,

Ця функція повертає об'єкт моменту на день, тому ви можете використовувати формат для виведення будь-якого потрібного вам формату. Як: moment (). StartOf ('місяць'). Формат ('YYYY-MM-DD HH: mm').
— Tan Le

@AuditeMarlow Приємна спроба, але питання дещо відрізняються, як пояснено в моїй редакції.
— користувач3574492

Відповіді:


374

Якщо хтось пропустив коментарі до оригінального питання, ви можете використовувати вбудовані методи (працює з Моменту 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
Не знаю, чому хтось видалив оригінальні коментарі, але причиною цього була не прийнята відповідь, тому що вона була розміщена через багато місяців після прийнятої відповіді.
— користувач3574492

2
дякую @ user3574492 не велика справа, дякую за пояснення - якщо ви вважаєте, що ця відповідь найкраща, то я думаю, що можна змінити її на прийняту відповідь, навіть якщо вона була опублікована пізніше.
— Алі Яздані

3
moment(1, "DD");повернеться перший день поточного місяця
— Аніл Вангарі

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 = момент (firstDay) .формат ('MM / DD / YYYY'); lastDay = момент (lastDay) .формат ('MM / DD / YYYY');
— Кевін Гросгоят

1
і як отримати startdateта enddateнаступного місяця, використовуючи цю формулу?
— alka vaghela

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

Перша та остання дата поточного місяця В момент.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')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.