如何获取每月的最后一天

How to get last day of the month

提问人:Rod 提问时间:12/18/2009 最后编辑:NoDataDumpNoContributionRod 更新时间:3/11/2023 访问量:63538

问:

如何获取时间戳为 11:59:59 PM 的当月最后一天?

JavaScript jQuery

评论


答:

41赞 miku 12/18/2009 #1

function LastDayOfMonth(Year, Month) {
  return new Date((new Date(Year, Month, 1)) - 1);
}

console.log(LastDayOfMonth(2009, 11))

例:

> LastDayOfMonth(2009, 11)
Mon Nov 30 2009 23:59:59 GMT+0100 (CET)

评论

1赞 RobG 6/14/2014
+1 但将时间设置为 23:59:59.999。也许最好将秒设置为 59.000,所以.:-)... Month, 1)) - 1000)
3赞 jcollum 3/17/2017
我无法想象为什么你要把 999ms 排除在范围计算之外
0赞 Tofandel 9/18/2019
同样,GMT 不守恒,在操作创建的日期对象时会得到奇怪的结果,请参阅 csukcc 答案以获取正确的实现
33赞 Chetan S 12/18/2009 #2

这将为您提供当月的最后一天。

var t= new Date();
alert(new Date(t.getFullYear(), t.getMonth() + 1, 0, 23, 59, 59));

评论

1赞 RobG 6/14/2014
不需要两个 Date 对象:。t.setMonths(t.getMonth()+1, 0, 23, 59, 59, 0)
1赞 CodingWeb 3/16/2019
请问getMonth()后面的数字是什么
0赞 Tofandel 9/18/2019
这不是一个正确的答案......GMT 不守恒
-1赞 yetAnotherSE 10/22/2012 #3
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));

Date lastDayOfMonth = cal.getTime();

评论

9赞 Pedro 1/23/2013
这是你那里得到的一些奇怪的javascript。
0赞 Jay Dadhania 9/12/2018
问题是关于javascript的,而不是Java!这个答案应该被删除。
2赞 jare25 2/11/2013 #4
var d = new Date();
m = d.getMonth(); //current month
y = d.getFullYear(); //current year
alert(new Date(y,m,1)); //this is first day of current month
alert(new Date(y,m+1,0)); //this is last day of current month   

评论

0赞 mickburkejnr 1/15/2014
我已经试过了,并给你下个月的最后一天。alert(new Date(y,m+1,0));
1赞 Jay Dadhania 9/12/2018
@mickburkejnr您可能想再次检查,我刚刚尝试过,它按预期工作。
7赞 csukcc 10/3/2013 #5

var d = new Date();
console.log(d);
d.setMonth(d.getMonth() + 1); // set month as next month
console.log(d);
d.setDate(0); // get the last day of previous month
console.log(d);

以下是上述代码的输出: Thu Oct 03 2013 11:34:59 GMT+0100 (GMT Daylight Time) Sun Nov 03, 2013 11:34:59 GMT+0000 (GMT Standard Time) Thu, Oct 31, 2013 11:34:
59 GMT+0000 (GMT Standard Time)


评论

0赞 Jared 9/21/2016
你可以通过将日期传递给这样来简化它:setMonthd.setMonth(d.getMonth() + 1, 0)
1赞 johnw182 11/23/2022
这不会按照问题中的要求设置时间戳“11:59:59 PM”。
1赞 david 1/17/2014 #6

每月的最后一天

now = new Date
lastDayOfTheMonth = new Date(1900+now.getYear(), now.getMonth()+1, 0)
1赞 Sajin M Aboobakkar 12/17/2015 #7
var month = 1; // 1 for January
var d = new Date(2015, month, 0);
console.log(d); // last day in January
1赞 Nicolas Giszpenc 5/27/2017 #8

有时您所拥有的只是当月的文本版本,即:2017 年 4 月。

//first and last of the current month
var current_month = "April 2017";
var arrMonth = current_month.split(" ");
var first_day = new Date(arrMonth[0] + " 1 " + arrMonth[1]);

//even though I already have the values, I'm using date functions to get year and month
//because month is zero-based
var last_day = new Date(first_day.getFullYear(), first_day.getMonth() + 1, 0, 23, 59, 59);

//use moment,js to format       
var start = moment(first_day).format("YYYY-MM-DD");
var end = moment(last_day).format("YYYY-MM-DD");
-1赞 Infomaster 9/19/2019 #9

不要忘记月份以 0 开头,所以月份也为 +1。

let enddayofmonth = new Date(year, month, 0).getDate();
0赞 johnw182 11/23/2022 #10

这些答案中的大多数都缺少一件事或另一件事。在玩了他们中的大多数人之后,我想出了以下内容,为您提供了本月的最后一毫秒。

let testDate = new Date();
console.log(getMonthEnd(testDate));

function getMonthEnd(value) {
    return new Date(value.getFullYear(), value.getMonth() + 1, 0, 23, 59, 59, 999);
}

可能也缺少一些东西,但似乎涵盖了我的所有要求。

0赞 Erismeiris Hidalgo Reyes 3/11/2023 #11

我正在使用此代码来获取当月的最后一天

getLastDayOfMonth() {
  const date = new Date()
  const month = date.getMonth() + 1
  const year = date.getFullYear()
  return new Date(year, month, 0).getDate()
}