转载

JAVA date 日常使用总结

主要使用 LocalDateTime 和 LocalDate

LocalDate : 只是到日期

LocalDateTime :包含dateTime 但是格式化中没有通用的 如 2020-01-07 18:00:01 格式的

格式转换的 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")

1. 转换为 yyyy-MM-dd String

格式是 : 2020-01-07

// 1. 当前时间的
LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

// 2. 固定时间的
String parseDateStr  = "2020-01-07";
String fixDateFormat = LocalDate.parse(parseDateStr).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

思路 先转换为 LocalDate 再转换为 string

同样使用于 yyyy-MM-dd HH:mm:ss

LocalDate 可以 parse 任意类型
 String  str     = "2017-11-21 14:41:06:612";
 DateTimeFormatter fmt  = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
 String  fixDateTimeStr = LocalDate.parse(str,fmt).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

2. 转换为 yyyy-MM-dd HH:mm:ss String

格式是 : 2020-01-07 18:00:01

// 获取当前时间的年月日 时分秒
 String formatDateTimeStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

// 获取固定时间的 年月日 时分秒

String formatDateStr = "2019-10-12";
String startOfDay = LocalDate.parse(formatDateStr).atTime(LocalTime.MIN)
  .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
String endOfDay = LocalDate.parse(formatDateStr).atTime(LocalTime.MAX)
  .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

通过 atTime 转换为 LocalDateTime

str + " 00:00:00"

3. 转换为 date

LocalDate nowLocalDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());

LocalDate nowLocalDate = LocalDate.now();
Date date = Date.from(nowLocalDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());

4. 修改时间

LocalDateTime.now().plusDays(2).withHour(23);

或者比较差值

LocalDateTime localDateTime01 = LocalDateTime.of(2019, 6, 18, 12, 0);
LocalDateTime localDateTime02 = LocalDateTime.of(2019, 6, 1, 12, 0);

System.out.println(localDateTime01.isAfter(localDateTime02));   // 类似的,还有 isBefore 等方法

LocalDateTime localDateTime03 = LocalDateTime.of(2019, 6, 18, 12, 0);
LocalDateTime localDateTime04 = LocalDateTime.of(2019, 6, 18, 13, 0);

Duration duration = Duration.between(localDateTime03, localDateTime04);
原文  https://segmentfault.com/a/1190000021553626
正文到此结束
Loading...