Момент 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.