在仔細一查發現工具類中有乙個獲取月份最大值,問題就出現在這裡咯。**很簡單
public然後我發現無論傳什麼進去最大值都是31。static
int lastday(int
month)
在system.out.println(calendar.gettime());列印出當前時間看看。發現如果傳進去的月份有31號,那麼就列印當月31號,如果沒有31號就為下個月的1號。輸入二月時輸出為3號。
輸入二月份debug一下,
calendar.getinstance()值為2019-10-31如下圖
calendar.set(calendar.month, 2-1)設定為二月如下圖,發現day_of_month=31,依然為31號
system.out.println(calendar.gettime())一下,輸出為2019-03-03,2019-02-31轉為2019-03-03
calendar.getactualmaximum(calendar.day_of_month)輸出值為31,由此可見,不能只設定月份,要整個clear掉,重新設定年月,這樣才會根據月份取最大值,不然會取到day_of_month的值。
解決方案一:
/**解決方案二:* 獲取某年某月的日期最大值
* @param
year 年份
* @param
month 月份
* @return
最大值
*/public
static
int lastday(int year , int
month)
calendar.set(calendar.month, month-1);
int maxday =calendar.getactualmaximum(calendar.day_of_month);
return
maxday;
}
/*** 根據年月獲取當月最後一天
* @param
yearmonth yyyy-mm
* @return
yyyy-mm-dd
* @throws
parseexception
*/public
static
string getlastdayofmonth(string yearmonth)
catch
(parseexception e)
return
null
; }
Calendar類set 方法的問題
首先我是看了這個博主的文章 裡面已經詳細的解釋了set方法的 陷阱 以及解決辦法,我只是發現了另乙個有意思的事 新的calendar例項之所以沒有生效是因為set值的時候沒有set日導致的,就好像是你已經set年 set月,系統就等著你set日呢,結果你不set了,導致後邊再用這個物件的時候它仍然記...
常用類 Calendar類
calendar類概述及其方法 calendar 類是乙個抽象類,它為特定瞬間與一組諸如 year month day of month hour 等 日曆字段之間的轉換提供了一些方法,並為操作日曆字段 例如獲得下星期的日期 提供了一些方法。成員方法 public static calendar g...
Date類 Calendar類的常用方法及運用
需求 1.根據生日計算年齡 2.獲取輸入日期的星期幾 3.獲取輸入日期的當月第一天 4.獲取輸入日期的當月最後一天 5.判斷該年是否是閏年 6.根據整型數表示的年月日,生成日期型別格式 public class birthday nowtime 獲取輸入日期的當月第一天 int firstday c...