Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位。
对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式的字符串,方便在输出时的调用,提供了众多便捷的方法对日期对象操作。
获取当前时间
/*** 获取当前时间*/@Testpublic void DateUtil(){//当前时间Date date = DateUtil.date();System.out.println(date);//当前时间Date date2 = DateUtil.date(Calendar.getInstance());System.out.println(date2);//当前时间Date date3 = DateUtil.date(System.currentTimeMillis());System.out.println(date3);//当前时间字符串,格式:yyyy-MM-dd HH:mm:ssString now = DateUtil.now();System.out.println(now);//当前日期字符串,格式:yyyy-MM-ddString today= DateUtil.today();System.out.println(today);}
格式化日期输出
/*** 格式化日期输出*/@Testpublic void DateParse(){String dateStr = "2022-04-19";//2022-04-19 00:00:00Date date = DateUtil.parse(dateStr);System.out.println(date);//2022/04/19String format = DateUtil.format(date, "yyyy/MM/dd");System.out.println(format);//2022-04-19String formatDate = DateUtil.formatDate(date);System.out.println(formatDate);//2022-04-19 00:00:00String formatDateTime = DateUtil.formatDateTime(date);System.out.println(formatDateTime);//00:00:00String formatTime = DateUtil.formatTime(date);System.out.println(formatTime);}
获取Date对象
/*** 获取Date对象的某个部分*/@Testpublic void DatePart(){Date date = DateUtil.date();System.out.println(DateUtil.year(date));//3 + 1System.out.println(DateUtil.month(date));//APRIL 4月System.out.println(DateUtil.monthEnum(date));}
开始和结束时间
/*** 开始和结束时间*/@Testpublic void beginOfDay(){String dateStr = "2022-03-01 22:33:23";Date date = DateUtil.parse(dateStr);//一天的开始,结果:2022-03-01 00:00:00Date beginOfDay = DateUtil.beginOfDay(date);System.out.println(beginOfDay);//一天的结束,结果:2022-03-01 23:59:59Date endOfDay = DateUtil.endOfDay(date);System.out.println(endOfDay);}
日期时间偏移
/*** 日期时间偏移* //昨天* DateUtil.yesterday()* //明天* DateUtil.tomorrow()* //上周* DateUtil.lastWeek()* //下周* DateUtil.nextWeek()* //上个月* DateUtil.lastMonth()* //下个月* DateUtil.nextMonth()*/@Testpublic void offset(){String dateStr = "2022-03-01 22:33:23";//2022-03-01 22:33:23Date date = DateUtil.parse(dateStr);System.out.println(date);//2022-03-03 22:33:23Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);System.out.println(newDate);//2022-03-04 22:33:23DateTime newDate2 = DateUtil.offsetDay(date, 3);System.out.println(newDate2);//2022-03-01 19:33:23DateTime newDate3 = DateUtil.offsetHour(date, -3);System.out.println(newDate3);}
日期时间差
/*** 日期时间差* 有时候我们需要计算两个日期之间的时间差(相差天数、相差小时数等等),Hutool将此类方法封装为between方法*/@Testpublic void between(){String dateStr1 = "2022-03-01 22:33:23";Date date1 = DateUtil.parse(dateStr1);String dateStr2 = "2022-04-01 23:33:23";Date date2 = DateUtil.parse(dateStr2);//相差一个月,31天long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);System.out.println(betweenDay);}
获取当前日期时间
/*** 获取当前日期时间*/@Testpublic void DateTime(){Date date = new Date();//new方式创建DateTime time = new DateTime(date);System.out.println(time);//of方式创建DateTime now = DateTime.now();DateTime dt = DateTime.of(date);System.out.println(now);System.out.println(dt);}
使用对象获取年月日
/*** 使用对象*/@Testpublic void DateTimeObject(){DateTime dateTime = new DateTime("2022-04-18 12:34:23", DatePattern.NORM_DATETIME_FORMAT);int year = dateTime.year();System.out.println(year);int month = dateTime.month()+1;System.out.println(month);int day = dateTime.dayOfMonth();System.out.println(day);}
DateTime转字符串
@Testpublic void dateStr(){DateTime dateTime = new DateTime("2022-04-18 12:34:23", DatePattern.NORM_DATETIME_FORMAT);String dateStr = dateTime.toString();System.out.println(dateStr);}
