gpt4 book ai didi

java - 为什么 Calendar.getActualMaximum 不起作用

转载 作者:行者123 更新时间:2023-12-01 20:52:14 33 4
gpt4 key购买 nike

我想获取一个月的最大日期,它在某一天不起作用,就像代码一样,它按条件显示如下二月有问题2017 Feb Max is 28,如果你电脑的日期大于28,比如2017-03-29或2017-04-30

Date date = PrimeUtil.formatStringToTime("2017-02","yyyy-MM");
System.out.println(date);
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR,date.getYear());
c.set(Calendar.MONTH,date.getMonth());
c.set(Calendar.DAY_OF_MONTH,c.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(c.getTime());

最佳答案

我遇到了你的问题。问题是,当您设置月份时,如果需要,日期会发生变化。

我有一个方法:

public static Date getLastDayOfMounth(int month){
Calendar cTemp = Calendar.getInstance();
// here is where I need to set the day
cTemp.set(Calendar.MONTH, month);
cTemp.set(Calendar.DAY_OF_MONTH, cTemp.getActualMaximum(Calendar.DAY_OF_MONTH));
return cTemp.getTime();
}

我有一个用于该方法的测试单元,用于测试每个月的方法,从 0 到 11。直到今天它一直有效。

今天,2018 年 3 月 29 日,2 月份的测试用例出错了......为什么?

首次 cTemp = 2018 年 3 月 29 日(今天)

然后cTemp.set(Calendar.MONTH, 1);是29/02/2018,但是这一天不存在,所以变成了01/03/2018

那么cTemp.getActualMaximum(Calendar.DAY_OF_MONTH)就是三月的最后一天。

我解决了添加

cTemp.set(Calendar.DAY_OF_MONTH, 1);

设置月份之前。所以我总是从第一天开始,避免跳到下个月的问题。

关于java - 为什么 Calendar.getActualMaximum 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093196/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com