Moment js获取当前月份的第一天和最后一天


137

如何在moment.js中以以下格式获取当月的第一天,最后一天和时间:

2016-09-01 00:00

我可以这样获取当前日期和时间: moment().format('YYYY-MM-DD h:m')它将以上述格式输出。

但是,我需要获取当前月份的第一天和最后一天的日期和时间,可以这样做吗?

编辑: 我的问题是从不同的一个,因为这要求一个给定月份用户已经拥有,而我要求的电流以及要求未在其他所谓提及的日期的具体格式“重复一个月'。



1
Moment.js支持获取月份的第一天和最后一天的功能,您可以通过以下方式获取当月的第一天和最后一天:我想你应该查看从回答这个
坦·勒

@TanLe是的,但是以以下格式输出:Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)我想要我在问题中提到的格式
user3574492

该函数返回一天的力矩对象,因此您可以使用format以所需的任何格式输出。像:moment()。startOf('month')。format('YYYY-MM-DD HH:mm')。
Tan Le

@AuditeMarlow不错的尝试,但问题与我的编辑中所述的稍有不同。
user3574492'9

Answers:


370

如果有人错过了对原始问题的评论,则可以使用内置方法(从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没什么大不了的,感谢您的澄清-如果您认为此答案是最佳答案,那么我认为可以将其更改为接受的答案,即使该答案稍后发布。
阿里·亚兹达尼

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

1
使用moment格式化日期... firstDay = moment(firstDay).format('MM / DD / YYYY'); lastDay = moment(lastDay).format('MM / DD / YYYY');
凯文·格罗斯戈雅特

1
以及如何获得startdateenddate使用这个公式下个月?
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

当前月份的第一个和最后一个日期在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')
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.