一、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 + "天");
运行结果: