Java Calendar日历类原理及使用方法
一、Calendar类概述
Java中Calendar类是一个抽象类,提供了实现万年历、农历等复杂功能的方法,是日期时间处理的重要类。Calendar类是Java中的日历系统,可以根据用户区域/语言环境使用各种日历系统,比如中国农历或世界其他国家的日历系统,也可以将实际日期与用户预期日期的偏差(时间偏移)合理地处理。Calendar类提供了丰富的方法,方便开发者进行各种日期的运算处理。
二、Calendar类的常用方法:
1.获取日期时间信息
Calendar类可以很方便地获取年、月、日、时、分、秒等各种日期时间信息。如下所示:
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
Calendar.getInstance() 方法用于获取一个Calendar实例。get方法则是获取Calendar实例中指定字段的值,如上述代码中获取了年、月、日、时、分、秒等信息。
其中,月份需要注意一下要加1,因为Calendar的月份是从0开始计数的。
2.日期时间计算
Calendar还提供了一系列方法可以进行日期时间的计算,如下所示:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -7);
这个代码语句的作用是获取去七天前的日期的Calendar实例。add方法可以对不同的时间单位进行加减操作。这里加减的是天数,可以对其他时间单位进行操作,如年、月、时等。
3.日期时间格式化
当我们将计算后的时间进行输出时,如果想要显示成自己需要的格式,就需要进行格式化。DateFormat类可以对日期时间进行格式化。
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(cal.getTime());
System.out.println("当前时间:" + dateStr);
这个代码语句的作用是获取当前时间的Calendar实例,然后将其格式化输出。
三、示例一:计算两个日期之间的天数
private static int getDaysBetween(Date beginDate, Date endDate) {
Calendar beginCal = Calendar.getInstance();
Calendar endCal = Calendar.getInstance();
beginCal.setTime(beginDate);
endCal.setTime(endDate);
if(beginCal.after(endCal)) {
Calendar temp = beginCal;
beginCal = endCal;
endCal = temp;
}
int days = endCal.get(Calendar.DAY_OF_YEAR) - beginCal.get(Calendar.DAY_OF_YEAR);
int endYear = endCal.get(Calendar.YEAR);
int beginYear = beginCal.get(Calendar.YEAR);
if(beginYear != endYear) {
do {
days += beginCal.getActualMaximum(Calendar.DAY_OF_YEAR);
beginCal.add(Calendar.YEAR, 1);
} while (beginCal.get(Calendar.YEAR) != endYear);
}
return days;
}
这段代码用于计算两个日期之间相差的天数,包括是否跨年。首先获取开始时间和结束时间的Calendar实例,判断开始时间是否在结束时间之后,然后计算两个时间在同一年内的天数和开始时间到结束时间中间所有年份的天数。
四、示例二:获取下个月的第一天
private static Date nextMonthFirstDay() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
String dateStr = sdf.format(calendar.getTime());
try {
return sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
这段代码用于获取下个月的第一天的日期。首先创建一个SimpleDateFormat的实例,然后获取当前时间的Calendar实例,将月份加1,将日期设置为1表示到下个月的第一天,最后使用 SimpleDateFormat 的 format 方法获取一下时间字符串,再用 parse 方法解析为 Date 对象即可。
五、总结
本文介绍了Java中的Calendar类的原理及使用方法,包括获取日期时间信息、日期时间计算、日期时间格式化以及以两个实际的场景进行了示例演示。掌握这些知识后,我们将能方便地对日期时间进行处理, 以达到我们自己的需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Calendar日历类原理及使用方法 - Python技术站