一、Date
- 创建日期对象
1)指定时间创建日期对象Date d = new Date(123456789); System.out.println(d);
运行结果:
2)创建当前时间的日期对象Date d = new Date(); System.out.println(d);
其效果等同于:
Date d = new Date(System.currentTimeMillis()); System.out.println(d);
运行结果:
-
获取时间的毫秒值
Date d = new Date(); long time = d.getTime(); System.out.println(time);
运行结果:
-
设置时间
可以通过上述构造方法设置,这里我们通过setTime()方法设置Date d = new Date(); d.setTime(1554902134466L); System.out.println(d);
运行结果:
二、SimpleDateFormat
上述Date输出的结果确实能表示时间,但是这个时间不符合我们平时使用时间的格式,所以我们可以使用SimpleDateFormat来指定时间的格式,更有利于国际化
日期模式字符:
这里只列出常用的模式字母
年 y
月 M
日 d
时 H
分 m
秒 s
- 日期 ---> 字符串
Date d = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String timeStr = format.format(d); System.out.println(timeStr);
运行结果:
-
字符串 ---> 日期
String timeStr ="2019年04月10日 21:31:10"; SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date date = format.parse(timeStr); System.out.println(date);
运行结果:
三、Calendar
Calendar为我们操控日历提供了非常方便的方法,下面我们挑选一些常用的进行演示
- 获取年月日(get)
// 获取日历实例 Calendar calendar = Calendar.getInstance(); // 获取年 int year = calendar.get(Calendar.YEAR); // 获取月 int month = calendar.get(Calendar.MONTH); // 获取日(月份中的天) int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(year+"年"+(month+1)+"月"+day+"日");
运行结果:
注意:获取日期中的字段是要用的是get方法,其中参数均为int类型,Calendar类的字段已经在类中封装好了。获取月份的时候,月份是从 0 开始的,所以若要显示出我们平时使用的月份,需要将获取的月份进行加 1 -
修改日历(add)
获取三年前的今天:// 获取日历实例 Calendar calendar = Calendar.getInstance(); // 获取年 int year = calendar.get(Calendar.YEAR); // 获取月 int month = calendar.get(Calendar.MONTH); // 获取日(月份中的天) int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + (month + 1) + "月" + day + "日"); // 年份 -3 calendar.add(Calendar.YEAR, -3); // 获取年 year = calendar.get(Calendar.YEAR); // 获取月 month = calendar.get(Calendar.MONTH); // 获取日(月份中的天) day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + (month + 1) + "月" + day + "日");
运行结果:
获取十年后的两个月前的十天后:// 获取日历实例 Calendar calendar = Calendar.getInstance(); // 获取年 int year = calendar.get(Calendar.YEAR); // 获取月 int month = calendar.get(Calendar.MONTH); // 获取日(月份中的天) int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + (month + 1) + "月" + day + "日"); // 年份 +10 calendar.add(Calendar.YEAR, +10); // 月份 -2 calendar.add(Calendar.MONTH, -2); // 天 +10 calendar.add(Calendar.DAY_OF_MONTH, +10); // 获取年 year = calendar.get(Calendar.YEAR); // 获取月 month = calendar.get(Calendar.MONTH); // 获取日(月份中的天) day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + (month + 1) + "月" + day + "日");
运行结果:
-
设置日期(set)
// 获取日历实例 Calendar calendar = Calendar.getInstance(); // 设置日历 calendar.set(2020, 3, 1); // 获取年 int year = calendar.get(Calendar.YEAR); // 获取月 int month = calendar.get(Calendar.MONTH); // 获取日(月份中的天) int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + (month + 1) + "月" + day + "日");
运行结果:
-
获取任意一年中的二月有多少天
我们可以用通过判断闰年来解决,这里不做演示。此处只演示使用Calendar来解决,会比判断闰年的方式更加简单
想要得到任意一年中的二月有多少天,我们可以这么思考。先得到这一年中的3月1日,然后向上推一天,然后获取月中的天即可。
注意:设置3月1日时,月份应为2,而不是3// 获取日历实例 Calendar calendar = Calendar.getInstance(); // 设置年份 int year = 2019; // 设置日历为3月1日,注意:3月为数字2,而不是3 calendar.set(year, 2, 1); // 3月1日向前推一天 calendar.add(Calendar.DAY_OF_MONTH, -1); // 获取二月最后一天 int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年二月有" + day + "天");
运行结果: