Skip to content

日期时间工具类

com.fengwenyi.javalib.convert.DateTimeUtils

日期时间,在日常开发中,用的比较多,比如:格式化输出,不同类型转换等操作。

推荐使用 LocalDateTime

常量

  • DateTimeUtils.DATE_TIME :yyyy-MM-dd HH:mm:ss
  • DateTimeUtils.DATE :yyyy-MM-dd
  • DateTimeUtils.TIME :HH:mm:ss

LocalDateTime格式化

java
LocalDateTime localDateTime = LocalDateTime.now();
String result = DateTimeUtils.format(localDateTime, DateTimeUtils.DateTime);
System.out.println(result);

LocalDate格式化

java
LocalDate localDate = LocalDate.now();
String result = DateTimeUtils.format(localDate, DateTimeUtils.Date);
System.out.println(result);

Date格式化

java
Date date = new Date();
String result = DateTimeUtils.format(date, DateTimeUtils.DateTime);
System.out.println(result);

时间戳格式化

java
long timestamp = System.currentTimeMillis();
String result = DateTimeUtils.format(timestamp, DateTimeUtils.DateTime);
System.out.println(result);

注意

时间戳格式是毫秒!

OffsetDateTime格式化

java
OffsetDateTime offsetDateTime = OffsetDateTime.now();
String result = DateTimeUtils.format(offsetDateTime, "uuuu-MM-dd'T'HH:mm:ssXXX");
System.out.println(result);

字符串解析为LocalDateTime

java
String dateTimeStr = "2023-04-27 18:00:00";
LocalDateTime result = DateTimeUtils.parseLocalDateTime(dateTimeStr, DateTimeUtils.DateTime);
System.out.println(result);

字符串解析为LocalDate

java
String dateTimeStr = "2023-04-27 18:00:00";
LocalDate result = DateTimeUtils.parseLocalDate(dateTimeStr, DateTimeUtils.DateTime);
System.out.println(result);

字符串解析为Date

java
String dateTimeStr = "2023-04-27 18:00:00";
Date result = DateTimeUtils.parseDate(dateTimeStr, DateTimeUtils.DateTime);
System.out.println(result);

Date转换成毫秒

java
Date date = new Date();
long result = DateTimeUtils.toMillisecond(date);
System.out.println(result);

LocalDateTime转换成毫秒

java
LocalDateTime localDateTime = LocalDateTime.now();
long result = DateTimeUtils.toMillisecond(localDateTime);
System.out.println(result);

LocalDate转换成毫秒

java
LocalDate localDate = LocalDate.now();
long result = DateTimeUtils.toMillisecond(localDate);
System.out.println(result);

Date转换成LocalDateTime

java
Date date = new Date();
LocalDateTime result = DateTimeUtils.toLocalDateTime(date);
System.out.println(result);

LocalDateTime转换成Date

java
LocalDateTime localDateTime = LocalDateTime.now();
Date result = DateTimeUtils.toLocalDateTime(localDateTime);
System.out.println(result);

LocalDateTime转换成OffsetDateTime

java
LocalDateTime localDateTime = LocalDateTime.now();
OffsetDateTime offsetDateTime = DateTimeUtils.toOffsetDateTime(localDateTime);

提供时区偏移

java
LocalDateTime localDateTime = LocalDateTime.now();
ZoneOffset zoneOffset = ZoneOffset.of("+8");
OffsetDateTime offsetDateTime = DateTimeUtils.toOffsetDateTime(localDateTime, zoneOffset);

提供偏移小时

java
LocalDateTime localDateTime = LocalDateTime.now();
String offsetId = "+8"
OffsetDateTime offsetDateTime = DateTimeUtils.toOffsetDateTime(localDateTime, offsetId);

时间戳转换成LocalDateTime

java
long timestamp = System.currentTimeMillis();
LocalDateTime result = DateTimeUtils.toLocalDateTime(timestamp);
System.out.println(result);

注意

时间戳格式是毫秒!

字符串合法性校验

java
String dateTimeStr = "2023-04-27 18:00:00";
boolean result = DateTimeUtils.isValid(dateTimeStr, DateTimeUtils.DateTime);
System.out.println(result);

获取年份

java
LocalDate localDate = LocalDate.now();
int result = DateTimeUtils.getYear(localDate);
System.out.println(result);

获取当前年份

java
int result = DateTimeUtils.getYear();
System.out.println(result);

获取自然周的开始时间

java
LocalDate localDate = LocalDate.now();
LocalDateTime result = DateTimeUtils.getStartOfNaturalWeek(localDate);
System.out.println(result);

提示

自然周就是周一到周日。
因此,返回的是,指定时间所在周的周一的时间。

获取月份的开始时间

java
LocalDate localDate = LocalDate.now();
LocalDateTime result = DateTimeUtils.getStartOfMonth(localDate);
System.out.println(result);

判断时间是否在区间内

java
LocalTime localTime = LocalTime.of(10, 0, 0);
LocalTime startTime = LocalTime.of(8, 0, 0);
LocalTime endTime = LocalTime.of(12, 0, 0);
boolean result = DateTimeUtils.judgeInTimeDuration(localTime, startTime, endTime);
System.out.println(result);

提示

1、返回true,表示在区间内;返回false,表示不再区间内。
2、区间内,分为两种,跨天和不跨天。
3、该方法不包含边界。

判断时间是否在区间内,含边界

java
LocalTime localTime = LocalTime.of(8, 0, 0);
LocalTime startTime = LocalTime.of(8, 0, 0);
LocalTime endTime = LocalTime.of(12, 0, 0);
boolean result = DateTimeUtils.judgeInTimeDurationWithBoundary(localTime, startTime, endTime);
System.out.println(result);

提示

1、返回true,表示在区间内;返回false,表示不再区间内。
2、区间内,分为两种,跨天和不跨天。
3、该方法包含边界。

时间戳转当天最小时间

java
long timestamp = System.currentTimeMillis();
LocalDateTime result = DateTimeUtils.toLocalDateTimeMin(timestamp);
System.out.println(result);

注意

时间戳格式是毫秒!

获取当天最小时间

java
LocalDateTime result = DateTimeUtils.toLocalDateTimeMin();
System.out.println(result);

日期转当天最小时间

java
LocalDate localDate = LocalDate.now();
LocalDateTime result = DateTimeUtils.toLocalDateTimeMin(localDate);
System.out.println(result);

时间转当天最小时间

java
LocalDateTime localDateTime = LocalDateTime.now();
LocalDateTime result = DateTimeUtils.toLocalDateTimeMin(localDateTime);
System.out.println(result);

时间戳转当天最大时间

java
long timestamp = System.currentTimeMillis();
LocalDateTime result = DateTimeUtils.toLocalDateTimeMax(timestamp);
System.out.println(result);

注意

时间戳格式是毫秒!

获取当天最大时间

java
LocalDateTime result = DateTimeUtils.toLocalDateTimeMax();
System.out.println(result);

日期转当天最大时间

java
LocalDate localDate = LocalDate.now();
LocalDateTime result = DateTimeUtils.toLocalDateTimeMax(localDate);
System.out.println(result);

时间转当天最大时间

java
LocalDateTime localDateTime = LocalDateTime.now();
LocalDateTime result = DateTimeUtils.toLocalDateTimeMax(localDateTime);
System.out.println(result);

Released under the MIT License.