3

在 javascript 中工作我遇到了一个非常简单的问题,即如何使用 javascript 和 momentjs 获取每月的第一天和每月的最后一天。我知道在 vb 中应该是这样的:

 Public Function LastDayOfMonth(ByVal current As DateTime) As DateTime
    Dim daysInMonth As Integer = DateTime.DaysInMonth(current.Year, current.Month)
    Return current.FirstDayOfMonth().AddDays(daysInMonth - 1)
End Function

 Public Function FirstDayOfMonth(ByVal current As DateTime) As DateTime
    Return current.AddDays(1 - current.Day)
End Function

我将如何将此代码移动到 javascript + momentjs?我认为图书馆没有类似的方法。

谢谢你。

4

1 回答 1

12

我不了解 VB,您的问题不清楚您的输入输出要求。据我了解,这是一个解决方案。它没有使用moments.js,而是POJS。如果您愿意(不知道为什么),您可以轻松地将其转换为使用时刻。

Javascript

function firstDayOfMonth() {
    var d = new Date(Date.apply(null, arguments));

    d.setDate(1);
    return d.toISOString();
}

function lastDayOfMonth() {
    var d = new Date(Date.apply(null, arguments));

    d.setMonth(d.getMonth() + 1);
    d.setDate(0);
    return d.toISOString();
}

var now = Date.now();

console.log(firstDayOfMonth(now));
console.log(lastDayOfMonth(now));

输出

2013-06-01T21:22:48.000Z 
2013-06-30T21:22:48.000Z 

格式见日期

jsfiddle 上

使用时刻,你可以做到这一点。

Javascript

console.log(moment().startOf('month').utc().toString());
console.log(moment().endOf("month").utc().toString());

输出

2013-06-01T00:00:00+02:00
2013-06-30T23:59:59+02:00

查看格式的时刻

jsfiddle 上

于 2013-06-17T20:29:00.237 回答