一: 日期时间工具
1、日期时间工具类:
- DateUtil: 提供了一系列静态方法,用于操作日期和时间,如日期格式化、字符串与日期的相互转换等。
- DateTime: 类似于Joda-Time中的日期时间对象封装,继承自Date类,并提供了更丰富的方法。
- FastDateFormat: 提供线程安全的日期格式化和解析支持。
- DateBetween: 计算两个时间间隔的类。
- TimeInterval: 计时器类,用于计算代码执行时间。
- DatePattern: 提供常用的日期格式化模式。
2、日期枚举:
- Month: 表示月份的枚举,与Calendar中的月份int值一一对应。
- Week: 表示周的枚举,与Calendar中的周int值一一对应。
- Season: 表示季度的枚举,用于统计概念,如Season.SPRING表示第一季度。
3、时间枚举:
- DateUnit: 表示时间单位对应的毫秒数,如DateUnit.MINUTE表示一分钟的毫秒数。
二: 日期时间工具-DateUtil
1、转换:
- 提供了Date、long、Calendar之间的相互转换方法。
2、字符串转日期:
- DateUtil.parse方法可以自动识别常用格式的日期字符串,并转换为Date对象。
String dateStr = "1997-01-01";
Date date = DateUtil.parse(dateStr);
我们也可以使用自定义日期格式转化:
String dateStr = "1997-01-01";
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");
3、格式化日期输出:
- 提供了多种格式化方法,包括自定义日期格式的转换。
4、获取Date对象的某个部分:
- 可以获取日期的年、月、日等部分。
Date date = DateUtil.date();
// 获得年的部分
DateUtil.year(date);
// 获得月份,从0开始计数
DateUtil.month(date);
// 获得月份枚举
DateUtil.monthEnum(date);
5、开始和结束时间:
- 获取每天、每月的开始时间和结束时间。
String str = "1997-01-01 00:00:00";
Date date = DateUtil.parse(str);
// 一天的开始,结果:1997-01-01 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);
// 一天的结束,结果:1997-01-01 23:59:59
Date endOfDay = DateUtil.endOfDay(date);
6、日期时间偏移:
- 提供了增加或减少日期时间的方法,如天、小时等。
String dateStr = "1997-01-01 00:00:00";
Date date = DateUtil.parse(dateStr);
// 结果:1997-01-01 00:00:00
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
// (天) 常用偏移,结果:1997-03-04 00:00:00
DateTime newDate2 = DateUtil.offsetDay(date, 3);
// (时) 常用偏移,结果:1997-01-01 00:00:00
DateTime newDate3 = DateUtil.offsetHour(date, -3);
// 昨天
DateUtil.yesterday();
// 明天
DateUtil.tomorrow();
// 上周、下周、上月以此找到对应的方法即可
7、日期时间差:
- 计算两个日期之间的时间差,如相差天数、小时数等。
String dateStr1 = "1997-01-01 00:00:00";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "1997-02-01 00:00:00";
Date date2 = DateUtil.parse(dateStr2);
//相差一个月,31天
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
8、格式化时间差:
- 将时间差格式化为易读的格式,如XX天XX小时XX分XX秒。
// Level.MINUTE表示精确到分
String formatBetween = DateUtil.formatBetween(between, Level.MINUTE);
// 输出:31天1小时
System.out.println("时间差" + formatBetween);
9、星座和属相、日期范围等