在日常开发中我们总会遇到一些时间上的处理需求,那么本篇文章就来总结一下常见的处理方法和工具类的使用方法
一、LocalDateTime类型时间的处理
1.获取当前时间
LocalDateTime nowTime = LocalDateTime.now();
System.out.println(nowTime);
2.获取年月日
String a = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE);
System.out.println(a);
String b = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(b);
3.获取时分秒
String c = LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println(c);
4.获取年月日时分秒毫秒
String d = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"));
System.out.println(d);
5.获取秒数
Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
System.out.println(second);
6.获取毫秒数
Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
System.out.println(milliSecond);
7.毫秒转LocalDateTime
Long longTime = 1613786449976L;
LocalDateTime ldt = Instant.ofEpochMilli(longTime).atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println(ldt);
8.String转LocalDateTime
String dateTimeStr = "2021-02-20 09:50:15";
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);
System.out.println(dateTime);
9.LocalDateTime转String
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTime2 = LocalDateTime.now(ZoneOffset.of("+8")).format(formatter);
System.out.println(dateTime2);
10.LocalDateTime转Date
Date date = new Date();
LocalDateTime localDateTime = date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
System.out.println(localDateTime);
11.Date转LocalDateTime
LocalDateTime localDateTime1 = LocalDateTime.now();
Date date1 = Date.from(localDateTime1.toInstant(ZoneOffset.of("+8")));
System.out.println(date1);
12.LocalDateTime获取年
System.out.println("当前时间为:"+LocalDateTime.now()+" == "+"2021-02-20T10:23:45.041");
int year = LocalDateTime.now().getYear();
System.out.println(year);
13.LocalDateTime获取月
Month month = LocalDateTime.now().getMonth();
System.out.println(month);
int monthValue = LocalDateTime.now().getMonthValue();
System.out.println(monthValue);
14.LocalDateTime获取日
int dayOfMonth = LocalDateTime.now().getDayOfMonth();
System.out.println(dayOfMonth);
DayOfWeek dayOfWeek = LocalDateTime.now().getDayOfWeek();
System.out.println(dayOfWeek);
int dayOfYear = LocalDateTime.now().getDayOfYear();
System.out.println(dayOfYear);
15.LocalDateTime获取时
int hour = LocalDateTime.now().getHour();
System.out.println(hour);
16.LocalDateTime获取分
int minute = LocalDateTime.now().getMinute();
System.out.println(minute);
17.LocalDateTime获取秒
int second1 = LocalDateTime.now().getSecond();
System.out.println(second1);
18.LocalDateTime获取特定日期
LocalDateTime of = LocalDateTime.of(2021, 2, 20, 10, 37, 20);
System.out.println(of);
19.LocalDateTime时间对比
LocalDateTime of1 = LocalDateTime.of(2021, 2, 20, 10, 37, 20);
LocalDateTime of2 = LocalDateTime.of(2021, 2, 20, 10, 37, 22);
LocalDateTime of3 = LocalDateTime.of(2021, 2, 20, 10, 37, 22);
System.out.println(of1.equals(of2));
System.out.println(of2.equals(of3));
System.out.println(of1.compareTo(of2));
System.out.println(of2.compareTo(of3));
System.out.println(of3.compareTo(of1));
System.out.println(of1.isAfter(of2));
System.out.println(of1.isBefore(of2));
System.out.println(of2.isEqual(of3));
20.LocalDateTime获取一天前/后日期
LocalDateTime localDateTime2 = LocalDateTime.now().plusDays(1)
//结果:2021-02-21T10:48:26.911
System.out.println(localDateTime2)
LocalDateTime localDateTime3 = LocalDateTime.now().plusDays(-1)
//结果:2021-02-19T10:48:26.911
System.out.println(localDateTime3)
21.LocalDateTime获取一小时前/后日期
LocalDateTime localDateTime4 = LocalDateTime.now().plusHours(1);
System.out.println(localDateTime4);
LocalDateTime localDateTime5 = LocalDateTime.now().plusHours(-1);
System.out.println(localDateTime5);
22.LocalDateTime获取一年前/后日期
LocalDateTime localDateTime6 = LocalDateTime.now().plusYears(1);
System.out.println(localDateTime6);
LocalDateTime localDateTime7 = LocalDateTime.now().plusYears(-1);
System.out.println(localDateTime7);
23.LocalDateTime获取一分钟前/后日期
LocalDateTime localDateTime8 = LocalDateTime.now().plusMinutes(1);
System.out.println(localDateTime8);
LocalDateTime localDateTime9 = LocalDateTime.now().plusMinutes(-1);
System.out.println(localDateTime9);
24.LocalDateTime获取一月前/后日期
LocalDateTime localDateTime10 = LocalDateTime.now().plusMonths(1);
System.out.println(localDateTime10);
LocalDateTime localDateTime11 = LocalDateTime.now().plusMonths(-1);
System.out.println(localDateTime11);
25.LocalDateTime获取一秒前/后日期
LocalDateTime localDateTime12 = LocalDateTime.now().plusSeconds(1);
System.out.println(localDateTime12);
LocalDateTime localDateTime13 = LocalDateTime.now().plusSeconds(-1);
System.out.println(localDateTime13);
26.LocalDateTime获取一周前/后日期
LocalDateTime localDateTime14 = LocalDateTime.now().plusWeeks(1);
System.out.println(localDateTime14);
LocalDateTime localDateTime15 = LocalDateTime.now().plusWeeks(-1);
System.out.println(localDateTime15);
二、Date类型时间的处理
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.7</version>
</dependency>
1.获取当前时间 年月日时分秒
public static void main(String[] args) {
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);
String date4 = DateUtil.now();
System.out.println(date4);
}
2.获取 年月日
String date= DateUtil.today();
System.out.println(date);
3.获取 时分秒
public static void main(String[] args) {
String format = DateUtil.format(DateUtil.date(), "HH:mm:ss");
System.out.println(format);
}
4.获取 年
int year = DateUtil.year(DateUtil.date());
System.out.println(year);
5.获取 月
public static void main(String[] args) {
System.out.println(DateUtil.date());
int month = DateUtil.month(DateUtil.date());
System.out.println(month);
Month months = DateUtil.monthEnum(DateUtil.date());
System.out.println(months.name());
System.out.println(months.getValue());
}
6.获取 日
int day = DateUtil.dayOfMonth(DateUtil.date());
System.out.println(day);
7.获取 时
int hour1 = DateUtil.hour(DateUtil.date(), true);
System.out.println(hour1);
int hour2 = DateUtil.hour(DateUtil.date(), false);
System.out.println(hour2);
8.获取 分
int minute = DateUtil.minute(DateUtil.date());
System.out.println(minute);
9.获取 秒
int second = DateUtil.second(DateUtil.date());
System.out.println(second);
10.获取 每天的开始时间和结束时间
public static void main(String[] args) {
DateTime beginOfDayTime = DateUtil.beginOfDay(DateUtil.date());
System.out.println(beginOfDayTime);
DateTime endOfDayTime = DateUtil.endOfDay(DateUtil.date());
System.out.println(endOfDayTime);
}
11.获取 每个月的开始时间和结束时间
public static void main(String[] args) {
DateTime beginOfMonthTime = DateUtil.beginOfMonth(DateUtil.date());
System.out.println(beginOfMonthTime);
DateTime endOfMonthTime = DateUtil.endOfMonth(DateUtil.date());
System.out.println(endOfMonthTime);
}
12.获取 每年的开始时间和结束时间
public static void main(String[] args) {
DateTime beginOfYearTime = DateUtil.beginOfYear(DateUtil.date());
System.out.println(beginOfYearTime);
DateTime endOfYearTime = DateUtil.endOfYear(DateUtil.date());
System.out.println(endOfYearTime);
}
13.获取 昨天-明天-上周-下周-上月-下月
public static void main(String[] args) {
System.out.println(DateUtil.date());
DateTime yesterday = DateUtil.yesterday();
System.out.println(yesterday);
DateTime tomorrow = DateUtil.tomorrow();
System.out.println(tomorrow);
DateTime lastWeek = DateUtil.lastWeek();
System.out.println(lastWeek);
DateTime nextWeek = DateUtil.nextWeek();
System.out.println(nextWeek);
DateTime lastMonth = DateUtil.lastMonth();
System.out.println(lastMonth);
DateTime nextMonth = DateUtil.nextMonth();
System.out.println(nextMonth);
}
14.获取 星座和属相
public static void main(String[] args) {
String zodiac = DateUtil.getZodiac(Month.JANUARY.getValue(), 19);
System.out.println(zodiac);
String chineseZodiac = DateUtil.getChineseZodiac(1994);
System.out.println(chineseZodiac);
}
15.获取 年龄
public static void main(String[] args) {
System.out.println(DateUtil.date());
int age = DateUtil.ageOfNow("1994-01-01");
System.out.println(age);
int age1 = DateUtil.ageOfNow(DateUtil.date());
System.out.println(age1);
}
16.获取 是否是闰年
public static void main(String[] args) {
boolean isLeapYear = DateUtil.isLeapYear(2018);
System.out.println(isLeapYear);
}
17.获取 当前日期的季度
public static void main(String[] args) {
int quarter = DateUtil.quarter(DateUtil.date());
System.out.println(quarter);
}
18.String转Date
public static void main(String[] args) {
String dateStr1 = "2022-03-01 22:33:23";
Date date = DateUtil.parse(dateStr1);
System.out.println(date);
DateTime parse = DateUtil.parse(dateStr1, "yyyy-MM-dd");
System.out.println(parse);
}
19.Date转String
public static void main(String[] args) {
DateTime date = DateUtil.date();
String format = DateUtil.format(date, "yyyy-MM-dd");
System.out.println(format);
String format1 = DateUtil.format(date, "yyyy/MM/dd");
System.out.println(format1);
String dateStr = DateUtil.formatDate(date);
System.out.println(dateStr);
String dateTimeStr = DateUtil.formatDateTime(date);
System.out.println(dateTimeStr);
String timeStr = DateUtil.formatTime(date);
System.out.println(timeStr);
}
20.获取 N天前后的时间
public static void main(String[] args) {
Date date = DateUtil.parse("2022-03-01 22:33:23");
DateTime timeAfter = DateUtil.offsetDay(date, 2);
System.out.println(timeAfter);
DateTime timeBefore = DateUtil.offsetDay(date, -2);
System.out.println(timeBefore);
}
21.获取 N个月前后的时间
public static void main(String[] args) {
Date date = DateUtil.parse("2022-03-01 22:33:23");
DateTime timeAfter = DateUtil.offsetMonth(date, 2);
System.out.println(timeAfter);
DateTime timeBefore = DateUtil.offsetMonth(date, -2);
System.out.println(timeBefore);
}
22.获取 N周前后的时间
public static void main(String[] args) {
Date date = DateUtil.parse("2022-03-30 22:33:23");
DateTime timeAfter = DateUtil.offsetWeek(date,1);
System.out.println(timeAfter);
DateTime timeBefore = DateUtil.offsetWeek(date, -1);
System.out.println(timeBefore);
}
23.获取 N小时前后的时间
public static void main(String[] args) {
Date date = DateUtil.parse("2022-03-30 22:33:23");
DateTime timeAfter = DateUtil.offsetHour(date,1);
System.out.println(timeAfter);
DateTime timeBefore = DateUtil.offsetHour(date, -1);
System.out.println(timeBefore);
}
24.获取 N分钟前后的时间
public static void main(String[] args) {
Date date = DateUtil.parse("2022-03-30 22:33:23");
DateTime timeAfter = DateUtil.offsetMinute(date,1);
System.out.println(timeAfter);
DateTime timeBefore = DateUtil.offsetMinute(date, -1);
System.out.println(timeBefore);
}
25.获取 N秒前后的时间
public static void main(String[] args) {
Date date = DateUtil.parse("2022-03-30 22:33:23");
DateTime timeAfter = DateUtil.offsetSecond(date,1);
System.out.println(timeAfter);
DateTime timeBefore = DateUtil.offsetSecond(date, -1);
System.out.println(timeBefore);
}
26.获取 N年前后的时间
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR,-1);
DateTime date = DateUtil.date(calendar);
System.out.println(date);
}
27.获取 两个时间相差的时间
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-04-01 23:33:23";
Date date2 = DateUtil.parse(dateStr2);
long betweenMS = DateUtil.between(date1, date2, DateUnit.MS);
System.out.println(betweenMS);
long betweenSecond = DateUtil.between(date1, date2, DateUnit.SECOND);
System.out.println(betweenSecond);
long betweenMinute = DateUtil.between(date1, date2, DateUnit.MINUTE);
System.out.println(betweenMinute);
long betweenHour = DateUtil.between(date1, date2, DateUnit.HOUR);
System.out.println(betweenHour);
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
System.out.println(betweenDay);
long betweenWeek = DateUtil.between(date1, date2, DateUnit.WEEK);
System.out.println(betweenWeek);
}
28.获取 两个时间的大小
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-04-01 23:33:23";
Date date2 = DateUtil.parse(dateStr2);
int compare = DateUtil.compare(date1, date2);
System.out.println(compare);
}
29.获取 两个时间相差的天数
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-03-02 01:33:23";
Date date2 = DateUtil.parse(dateStr2);
long day1 = DateUtil.betweenDay(date1, date2,false);
System.out.println(day1);
long day2 = DateUtil.betweenDay(date1, date2,true);
System.out.println(day2);
}
30.获取 两个时间相差的月数
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-04-01 01:33:23";
Date date2 = DateUtil.parse(dateStr2);
long day1 = DateUtil.betweenMonth(date1, date2,false);
System.out.println(day1);
long day2 = DateUtil.betweenMonth(date1, date2,true);
System.out.println(day2);
}
31.获取 两个时间相差的年数
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2018-03-01 01:33:23";
Date date2 = DateUtil.parse(dateStr2);
long day1 = DateUtil.betweenYear(date1, date2,false);
System.out.println(day1);
long day2 = DateUtil.betweenYear(date1, date2,true);
System.out.println(day2);
}
32.获取 两个时间相差的小时数
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-03-01 23:33:22";
Date date2 = DateUtil.parse(dateStr2);
long day1 = DateUtil.between(date1, date2,DateUnit.HOUR);
System.out.println(day1);
}
33.获取 两个时间相差的分钟数
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-03-01 22:32:24";
Date date2 = DateUtil.parse(dateStr2);
long day1 = DateUtil.between(date1, date2,DateUnit.MINUTE);
System.out.println(day1);
}
34.获取 两个时间相差的秒数
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-03-01 22:33:24";
Date date2 = DateUtil.parse(dateStr2);
long day1 = DateUtil.between(date1, date2,DateUnit.SECOND);
System.out.println(day1);
}
35.获取 两个时间相差的毫秒数
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-03-01 22:33:24";
Date date2 = DateUtil.parse(dateStr2);
long day1 = DateUtil.between(date1, date2,DateUnit.MS);
System.out.println(day1);
}
36.获取 两个时间相差的时间(友好提示)
public static void main(String[] args) {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2018-04-02 23:34:24";
Date date2 = DateUtil.parse(dateStr2);
String s1 = DateUtil.formatBetween(date1, date2);
System.out.println(s1);
String s2 = DateUtil.formatBetween(1000);
System.out.println(s2);
}
37.获取 今天是今年以来的第几周
public static void main(String[] args) {
int i = DateUtil.thisWeekOfYear();
System.out.println(i);
}
38.获取 年月日中文版
public static void main(String[] args) {
String s = DateUtil.formatChineseDate(DateUtil.date(),true);
System.out.println(s);
String s1 = DateUtil.formatChineseDate(DateUtil.date(),false);
System.out.println(s1);
String s2 = DateUtil.formatHttpDate(DateUtil.date());
System.out.println(s2);
}
39.毫秒转时间
public static void main(String[] args) {
DateTime date = DateUtil.date(1645602596000L);
System.out.println(date);
}
40.时间转毫秒
public static void main(String[] args) {
long time = DateUtil.date().getTime();
System.out.println(time);
}
41.判断当前时间是否在两个时间范围内
public static void main(String[] args) {
boolean isIn = DateUtil.date().isIn(DateUtil.parse("2022-02-22 22:33:23"), DateUtil.parse("2022-02-24 22:33:23"));
System.out.println(isIn);
}
42.判断当前时间是否大于/小于某个时间
public static void main(String[] args) {
System.out.println(DateUtil.date());
boolean isBefore = DateUtil.date().isBefore(DateUtil.parse("2022-02-22 22:33:23"));
System.out.println(isBefore);
boolean isAfter = DateUtil.date().isAfter(DateUtil.parse("2022-02-22 22:33:23"));
System.out.println(isAfter);
boolean isBeforeEqual = DateUtil.date().isBeforeOrEquals(DateUtil.parse("2022-02-23"));
System.out.println(isBeforeEqual);
boolean isAfterEqual = DateUtil.date().isBeforeOrEquals(DateUtil.parse("2022-02-23"));
System.out.println(isAfterEqual);
boolean isAfterEquals = DateUtil.date().isBeforeOrEquals(DateUtil.date());
System.out.println(isAfterEquals);
}