Javascript 获取当月第一天和最后一天的时刻

Javascript 获取当月第一天和最后一天的时刻,javascript,date,momentjs,Javascript,Date,Momentjs,如何在moment.js中以以下格式获取当月的第一天和最后一天及时间: 2016-09-01 00:00 我可以按如下方式获取当前日期和时间: moment().format('YYYY-MM-DD h:m')将以上述格式输出 但是,我需要获得当月第一天和最后一天的日期和时间,有什么方法可以做到这一点吗 编辑: 我的问题不同于一个问题,因为它要求用户已经有一个给定的月份,而我要求的是当前的月份,同时要求的是另一个所谓的“重复”中没有提到的日期的特定格式。您可以不必使用矩。js console.l

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

2016-09-01 00:00

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

但是,我需要获得当月第一天和最后一天的日期和时间,有什么方法可以做到这一点吗

编辑:
我的问题不同于一个问题,因为它要求用户已经有一个给定的月份,而我要求的是当前的月份,同时要求的是另一个所谓的“重复”中没有提到的日期的特定格式。

您可以不必使用矩。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); 
在本机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);

假设您正在使用日期范围选择器检索日期。你可以做一些事情,比如得到你想要的

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

还有另一种方法可以做到这一点:

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

如果有人遗漏了对原始问题的评论,您可以使用内置方法(从1.7开始使用):

时刻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

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); 
只要简单,我们就可以使用和


我遇到了一些问题,因为我不知道
moment().endOf()
会改变输入日期,所以我使用了这个方法

让thismome=moment();
设endOfMonth=时刻(thisMoment).endOf('month');

让startOfMonth=时刻(thismonent)。startOf('month')Moment.js的可能副本支持获取月的第一天和最后一天的函数,您可以通过以下方式获取当月的日期:Moment().startOf('month')和Moment().endOf('month')。我认为您应该查看@TanLe Yes的答案,但这将以以下格式输出:
2016年9月1日星期四00:00:00 GMT+0100(GMT夏季时间)
我想要我在问题中提到的格式,即函数返回一天的矩对象,因此您可以使用格式以您想要的任何格式输出。例如:moment().startOf('month').format('YYYY-MM-DD HH:MM')。@AuditeMarlow尝试得很好,但问题与我在编辑中解释的略有不同。这将以默认日期格式输出
2016年9月1日星期四00:00:00 GMT+0100(GMT夏季时间)
不是我想要的格式:
2016-09-01 00:00
使用时间格式化日期。。。firstDay=时刻(firstDay).格式('MM/DD/YYYY');lastDay=时刻(lastDay).格式('MM/DD/YYYY');以及如何使用此公式获得下个月的
startdate
enddate
?不知道为什么有人删除了原始评论,但这不是被接受的答案的原因是因为它是在被接受的答案发布数月后发布的。谢谢@user3574492没什么大不了的,感谢您的澄清-如果您认为此答案是最好的答案,那么我认为可以将其更改为已接受的答案,即使它是稍后发布的。
moment(1,“DD”)
将返回当前月份的第一天为什么我们需要
克隆
此处?如果要使用相同的变量,请始终使用矩().clone()。
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')