快速获取当天0点0分0秒(00:00:00),23点59分59秒(23:59:59) | 不羁鱼Karle-CSDN
Java中Calendar基本使用 | 谷半仙-CSDN
Calendar | Elven_Shi-OSCHINA
二、Calendar基本方法 1、Calendar中的常用日历字段。
| 日历字段 | Value |
|---|---|
| YEAR | 当前年份 |
| MONTH | 当前月份( 注:初始值是从0开始,所以得到的比实际月份小1月) |
| DATE | 一个月中的某天 |
| WEEK_OF_YEAR | 当前年中的第几个星期 |
| WEEK_OF_MONTH | 当前月中的第几个星期 |
| DAY_OF_MONTH | 一个月中的第几天 |
| DAY_OF_YEAR | 一年中的第几天 |
| DAY_OF_WEEK | 一个星期中的第几天 |
| DAY_OF_WEEK_IN_MONTH | 当前月中的第几个星期(注:当前月第1-7天是第一个星期,8-14是第二个星期,以此类推) |
| HOUR_OF_DAY | 一天中的第几个小时 |
| MINUTE | 一小时中的第几分钟 |
| SECOND | 一分钟中的第几秒 |
| MILLISECOND | 一秒中的第几毫秒 |
Calendar cal = Calendar.getInstance();
//查看上表的字段给KKK赋值 cal.get(Calendar.KKK); //例如 cal.get(Calendar.DATE); //当天 1-31 cal.getMaximum(Calendar.DATE); //这个月的天数 cal.getMinimum(Calendar.DATE); //这个月第一提案2、赋值语句。
// 对以上每个字段进行赋值,代码重复较大 cal.set(Calendar.KKK, VVVV); // 分别对字段进行赋值,效率高 cal.set(year,month,date,hour,minute,second);3、计算语句。
//一般不使用,原因是该方法只在一个月里面循环计算,其大小不会超过该月最值 cal1.roll(Calendar.KKK,VVV); //使用 XX_OF_XX 的field进行加减计算效果更佳,而且计算准确 cal1.add(Calendar.KKK,VVV);
关于add的计算:
例子1:获取下个月第1天。
先调到下个月:cal1.add(Calendar.MONTH, 1);
如果当前为5-31,那么,加一个月的话就是6-30;
设置为这个月中的第1天: cal.set(Calendar.DAY_OF_MONTH, 1);
例子2:获取下个月最后1天。
先调到下2个月:cal1.add(Calendar.MONTH, 2);
设置为这个月中的第0天: cal.set(Calendar.DAY_OF_MONTH, 0);
理解为:下2个月的第1天 - 1天 = 下个月最后1天
三、个人需求
- 获得下个月的天数;
- 根据下个月第几天获得该天的日期;
- 获得下个月第一天(00:00:00)和最后一天(23:59:59)的日期。
四、计算日期工具类 1、工具类代码。
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Date;
//计算日期工具类
@Component
public class DateUtils {
//获得下个月的天数
public static int getNextMonthDays() {
//获取下月的第一天
Calendar cal = Calendar.getInstance();
//调到下个月
cal.add(Calendar.MONTH, 1);
//下个月的天数
int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
return days;
}
//根据下个月第几天获得该天的日期
public static Date getNextMonthByDay(int day) {
//获取下月的第一天
Calendar cal = Calendar.getInstance();
//调到下个月
cal.add(Calendar.MONTH, 1);
//获取下个月的那一天
cal.set(Calendar.DAY_OF_MONTH, day);
Date date = cal.getTime();
return date;
}
//获得下个月第一天和最后一天的日期
public static Date getFirstDate() {
//获取下月的第一天0点0分0秒
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, 1, 0, 0, 0);
Date firstDate = calendar.getTime();
return firstDate;
}
//获取下月的最后一天23点59分59秒
public static Date getLastDate() {
Calendar calendar = Calendar.getInstance();
calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 2, 0, 23, 59, 59);
Date lastDate = calendar.getTime();
return lastDate;
}
}
2、测试方法。
public static void main(String[] args) {
//测试方法1
int nextMonthDays = getNextMonthDays();
System.out.println("下个月的天数是:" + nextMonthDays);
//测试方法2
int day = 3;
Date nextMonthByDay = getNextMonthByDay(day);
System.out.println("下个月的第" + day + "天是:" + nextMonthByDay);
//测试方法3
System.out.println("");
getFirstAndLastDate();
}
3、输出结果。



