Java 日期处理(Calendar)

2014-07-22· 2494 次浏览
## 介绍 Calendar 类是一个抽象类,它为一组诸如 YEAR、MONTH、DAY\_OF\_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。 当前毫秒值是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。 ## 日期加减 ```java public class TestCalendar { // 使用默认时区和语言环境获得一个日历。 private static Calendar calendar = Calendar.getInstance(); public static void print(String name) { System.out.print(name + ": "); System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime())); } public static void main(String[] args) { print("当前时间 "); calendar.add(Calendar.HOUR_OF_DAY, 1); print("增加1小时"); calendar.add(Calendar.DAY_OF_MONTH, 1); print("增加1天 "); calendar.add(Calendar.MONTH, 1); print("增加1个月"); calendar.add(Calendar.YEAR, 1); print("增加1年 "); calendar.add(Calendar.YEAR, -2); print("减少2年 "); } } ``` ### 输出 ``` 当前时间 : 2018-05-08 21:15:35 增加1小时: 2018-05-08 22:15:35 增加1天 : 2018-05-09 22:15:35 增加1个月: 2018-06-09 22:15:35 增加1年 : 2019-06-09 22:15:35 减少2年 : 2017-06-09 22:15:35 ``` ## 创建指定日期的对象 GregorianCalendar构造方法参数依次为:年,月,日,时,分,秒。 Java月份是从0-11,月份设置时要减1 ```java Calendar calendar = new GregorianCalendar(2016, 8, 1, 15, 41, 22); ``` ## 获取年、月、日、时、分、秒的方法 ```java Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); // 取月份要加1. int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); int hover = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int seconds = calendar.get(Calendar.SECOND); ``` ## 获取当前月份的最大天数 ```java Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH); ``` ## 两个日期相差天数 ```java long millisOfDay = 24 * 60 * 60 * 1000; Calendar calendar = new GregorianCalendar(2015, 9, 1); Calendar calendar1 = new GregorianCalendar(2016, 9, 1); Calendar calendar2 = new GregorianCalendar(2017, 9, 1); // 2016年是闰年,得到366天 System.out.println((calendar1.getTimeInMillis() - calendar.getTimeInMillis()) / millisOfDay); // 2017年是平年,得到365天 System.out.println((calendar2.getTimeInMillis() - calendar1.getTimeInMillis()) / millisOfDay); ```