工具类
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
public class LocalDateTimeUtil {
public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
* 获取当前系统时间
* @return
*/
public static LocalTime getLocalTime() {
return LocalTime.now();
}
/**
* 获取当前系统日期
* @return
*/
public static LocalDate getLocalDate() {
return LocalDate.now();
}
/**
* 获取当前系统日期时间
* @return
*/
public static LocalDateTime getLocalDateTime() {
return LocalDateTime.now();
}
/**
* 获取当前系统日期时间毫秒数
* @return
*/
public static long getLocalDateTimeStamp() {
//获取毫秒数
return LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
/**
* 时间戳转LocalDateTime字符串时间格式
* @return
*/
public static String getLocalDateTimeStringtime(long time) {
String dateTime = LocalDateTime.ofEpochSecond(time/1000, 0, ZoneOffset.ofHours(8)).format(DATETIME_FORMATTER);
return dateTime;
}
/**
* LocalDateTime转时间戳
* @return
*/
public static long getLocalDateTimeToMstime(LocalDateTime time) {
long Mstime = time.toInstant(ZoneOffset.of("+8")).toEpochMilli();
return Mstime;
}
/**
* 获取当前系统时间字符串
* @return
*/
public static String getLocalTimeString() {
return LocalTime.now().format(TIME_FORMATTER);
}
/**
* 获取当前系统日期字符串
* @return
*/
public static String getLocalDateString() {
return LocalDate.now().format(DATE_FORMATTER);
}
/**
* LocalDateTime转日期时间字符串
* @return
*/
public static String getLocalDateTimeTOString(LocalDateTime localDateTime) {
return localDateTime.format(DATETIME_FORMATTER);
}
/**
* 获取当前系统日期时间字符串
* @return
*/
public static String getLocalDateTimeString() {
return LocalDateTime.now().format(DATETIME_FORMATTER);
}
/**
* 字符串转LocalTime
* @param time
* @return
*/
public static LocalTime string2LocalTime(String time) {
return LocalTime.parse(time, TIME_FORMATTER);
}
/**
* 字符串转LocalDate
* @param date
* @return
*/
public static LocalDate string2LocalDate(String date) {
return LocalDate.parse(date, DATE_FORMATTER);
}
/**
* 字符串转LocalDateTime
* @param dateTime
* @return
*/
public static LocalDateTime string2LocalDateTime(String dateTime) {
return LocalDateTime.parse(dateTime, DATETIME_FORMATTER);
}
/**
* 获取当前时间后3分钟的时间
* @param
* @return
*/
public static LocalDateTime getCurrentTimeLater(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar beforeTime = Calendar.getInstance();
beforeTime.add(Calendar.MINUTE, +3);// 1分钟之后的时间
Date beforeD = beforeTime.getTime();
String time = sdf.format(beforeD);
LocalDateTime localDateTime = LocalDateTimeUtil.string2LocalDateTime(time);
return localDateTime;
}
/**
* 获取当前时间前3分钟的时间
* @param
* @return
*/
public static LocalDateTime getCurrentTimeBefore(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar beforeTime = Calendar.getInstance();
beforeTime.add(Calendar.MINUTE, -3);// 分钟之前的时间
Date beforeD = beforeTime.getTime();
String time = sdf.format(beforeD);
LocalDateTime localDateTime = LocalDateTimeUtil.string2LocalDateTime(time);
return localDateTime;
}
/**
* Date转LocalDateTime
* @param date
* @return
*/
public static LocalDateTime date2LocalDateTime(Date date) {
Instant instant = date.toInstant(); //An instantaneous point on the time-line.(时间线上的一个瞬时点。)
ZoneId zoneId = ZoneId.systemDefault(); //A time-zone ID, such as {@code Europe/Paris}.(时区)
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
return localDateTime;
}
/**
* Date转LocalDate
* @param date
* @return
*/
public static LocalDate date2LocalDate(Date date) {
Instant instant = date.toInstant(); //An instantaneous point on the time-line.(时间线上的一个瞬时点。)
ZoneId zoneId = ZoneId.systemDefault(); //A time-zone ID, such as {@code Europe/Paris}.(时区)
LocalDate localDate = instant.atZone(zoneId).toLocalDate();
return localDate;
}
/**
* Date转LocalDate
* @param date
* @return
*/
public static LocalTime date2LocalTime(Date date) {
Instant instant = date.toInstant(); //An instantaneous point on the time-line.(时间线上的一个瞬时点。)
ZoneId zoneId = ZoneId.systemDefault(); //A time-zone ID, such as {@code Europe/Paris}.(时区)
LocalTime localTime = instant.atZone(zoneId).toLocalTime();
return localTime;
}
/**
* LocalDateTime转换为Date
* @param localDateTime
*/
public static Date localDateTime2Date(LocalDateTime localDateTime){
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);//Combines this date-time with a time-zone to create a ZonedDateTime.
Date date = Date.from(zdt.toInstant());
return date;
}
/**
* 获取当前时间后3分钟的时间
* @param
* @return
*/
public static LocalDateTime getAppointTimeLater(LocalDateTime date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar beforeTime = Calendar.getInstance();
beforeTime.add(Calendar.MINUTE, +3);// 1分钟之后的时间
Date date1 = localDateTime2Date(date);
beforeTime.setTime(date1);
Date before = beforeTime.getTime();
String time = sdf.format(before);
LocalDateTime localDateTime = LocalDateTimeUtil.string2LocalDateTime(time);
return localDateTime;
}
public static void main(String[] args) {
LocalDateTime aa = LocalDateTimeUtil.string2LocalDateTime("2020-09-24 12:45:00");
LocalDateTime localDateTime1 = aa.plusMinutes(3);
LocalDateTime localDateTime = aa.minusMinutes(20);
System.out.println(localDateTime1);
System.out.println(localDateTime);
}
/**
* 日期相隔天数
* @param startDateInclusive
* @param endDateExclusive
* @return
*/
public static int periodDays(LocalDate startDateInclusive, LocalDate endDateExclusive) {
return Period.between(startDateInclusive, endDateExclusive).getDays();
}
/**
* 日期相隔小时
* @param startInclusive
* @param endExclusive
* @return
*/
public static long durationHours(Temporal startInclusive, Temporal endExclusive) {
return Duration.between(startInclusive, endExclusive).toHours();
}
/**
* 日期相隔分钟
* @param startInclusive
* @param endExclusive
* @return
*/
public static long durationMinutes(Temporal startInclusive, Temporal endExclusive) {
return Duration.between(startInclusive, endExclusive).toMinutes();
}
/**
* 日期相隔毫秒数
* @param startInclusive
* @param endExclusive
* @return
*/
public static long durationMillis(Temporal startInclusive, Temporal endExclusive) {
return Duration.between(startInclusive, endExclusive).toMillis();
}
/**
* 是否当天
* @param date
* @return
*/
public static boolean isToday(LocalDate date) {
return getCurrentLocalDate().equals(date);
}
}
所有方法
all method:
1. adjustInto 调整指定的Temporal和当前LocalDateTime对
2. atOffset 结合LocalDateTime和ZoneOffset创建一个
3. atZone 结合LocalDateTime和指定时区创建一个ZonedD
4. compareTo 比较两个LocalDateTime
5. format 格式化LocalDateTime生成一个字符串
6. from 转换TemporalAccessor为LocalDateTi
7. get 得到LocalDateTime的指定字段的值
8. getDayOfMonth 得到LocalDateTime是月的第几天
9. getDayOfWeek 得到LocalDateTime是星期几
10. getDayOfYear 得到LocalDateTime是年的第几天
11. getHour 得到LocalDateTime的小时
12. getLong 得到LocalDateTime指定字段的值
13. getMinute 得到LocalDateTime的分钟
14. getMonth 得到LocalDateTime的月份
15. getMonthValue 得到LocalDateTime的月份,从1到12
16. getNano 得到LocalDateTime的纳秒数
17. getSecond 得到LocalDateTime的秒数
18. getYear 得到LocalDateTime的年份
19. isAfter 判断LocalDateTime是否在指定LocalDateT
20. isBefore 判断LocalDateTime是否在指定LocalDateT
21. isEqual 判断两个LocalDateTime是否相等
22. isSupported 判断LocalDateTime是否支持指定时间字段或单元
23. minus 返回LocalDateTime减去指定数量的时间得到的值
24. minusDays 返回LocalDateTime减去指定天数得到的值
25. minusHours 返回LocalDateTime减去指定小时数得到的值
26. minusMinutes 返回LocalDateTime减去指定分钟数得到的值
27. minusMonths 返回LocalDateTime减去指定月数得到的值
28. minusNanos 返回LocalDateTime减去指定纳秒数得到的值
29. minusSeconds 返回LocalDateTime减去指定秒数得到的值
30. minusWeeks 返回LocalDateTime减去指定星期数得到的值
31. minusYears 返回LocalDateTime减去指定年数得到的值
32. now 返回指定时钟的当前LocalDateTime
33. of 根据年、月、日、时、分、秒、纳秒等创建LocalDateTi
34. ofEpochSecond 根据秒数(从1970-01-0100:00:00开始)创建L
35. ofInstant 根据Instant和ZoneId创建LocalDateTim
36. parse 解析字符串得到LocalDateTime
37. plus 返回LocalDateTime加上指定数量的时间得到的值
38. plusDays 返回LocalDateTime加上指定天数得到的值
39. plusHours 返回LocalDateTime加上指定小时数得到的值
40. plusMinutes 返回LocalDateTime加上指定分钟数得到的值
41. plusMonths 返回LocalDateTime加上指定月数得到的值
42. plusNanos 返回LocalDateTime加上指定纳秒数得到的值
43. plusSeconds 返回LocalDateTime加上指定秒数得到的值
44. plusWeeks 返回LocalDateTime加上指定星期数得到的值
45. plusYears 返回LocalDateTime加上指定年数得到的值
46. query 查询LocalDateTime
47. range 返回指定时间字段的范围
48. toLocalDate 返回LocalDateTime的LocalDate部分
49. toLocalTime 返回LocalDateTime的LocalTime部分
50. toString 返回LocalDateTime的字符串表示
51. truncatedTo 返回LocalDateTime截取到指定时间单位的拷贝
52. until 计算LocalDateTime和另一个LocalDateTi
53. with 返回LocalDateTime指定字段更改为新值后的拷贝
54. withDayOfMonth 返回LocalDateTime月的第几天更改为新值后的拷贝
55. withDayOfYear 返回LocalDateTime年的第几天更改为新值后的拷贝
56. withHour 返回LocalDateTime的小时数更改为新值后的拷贝
57. withMinute 返回LocalDateTime的分钟数更改为新值后的拷贝
58. withMonth 返回LocalDateTime的月份更改为新值后的拷贝
59. withNano 返回LocalDateTime的纳秒数更改为新值后的拷贝
60. withSecond 返回LocalDateTime的秒数更改为新值后的拷贝
61. withYear 返回LocalDateTime年份更改为新值后的拷贝