Calendar類set 方法的問題

2021-10-24 23:07:30 字數 925 閱讀 1901

首先我是看了這個博主的文章:

裡面已經詳細的解釋了set方法的「陷阱」以及解決辦法,我只是發現了另乙個有意思的事:

新的calendar例項之所以沒有生效是因為set值的時候沒有set日導致的,就好像是你已經set年+set月,系統就等著你set日呢,結果你不set了,導致後邊再用這個物件的時候它仍然記錄的之前的值。

所以只要把年月日都set了就生效了。這也就解決了有的同學說為啥我一直沒有clear()**也沒有出錯的疑惑了。

calendar calendar = calendar.getinstance();

了年月日的話不clear也會生效

calendar.set(calendar.year, 2020);

calendar.set(calendar.month, 1);

calendar.set(calendar.day_of_month, 28); //

int i = calendar.getactualmaximum(calendar.day_of_month);

system.out.println(i);

system.out.println(calendar.get(calendar.day_of_month));

當前系統時間是:2020-10-31

執行得到:

2928

如果沒有set日,得到:312

再補充一下,並不是不set日就一定出bug,當今天實際的日比要set的月份的最大天數大的時候,只set月份不set日才會出現bug。

比如現在是2023年10月31日,這個時候set月份是2月份又不set日就會出bug,calendar.set(calendar.month, 1);因為2月沒有31日。但是如果今天是2023年10月28日,這個時候set月份是2月份又不set日卻不會出bug。因為2月真的有28日。

Calendar類set方法中的坑

在仔細一查發現工具類中有乙個獲取月份最大值,問題就出現在這裡咯。很簡單 public static int lastday int month 然後我發現無論傳什麼進去最大值都是31。在system.out.println calendar.gettime 列印出當前時間看看。發現如果傳進去的月份有...

Date類 Calendar類的常用方法及運用

需求 1.根據生日計算年齡 2.獲取輸入日期的星期幾 3.獲取輸入日期的當月第一天 4.獲取輸入日期的當月最後一天 5.判斷該年是否是閏年 6.根據整型數表示的年月日,生成日期型別格式 public class birthday nowtime 獲取輸入日期的當月第一天 int firstday c...

Calendar類及常用的成員方法

calendar是乙個日曆類,是用來替代date類,在jdk的更新下,慢慢取代了date類 calendar是乙個抽象類,裡面提供了很多操作日曆欄位的方法,例如年月日等 calendar類無法直接建立物件物件使用,裡面有乙個靜態方法叫getinstance 方法,該方法返回了calendar的子類物...