前言
最近在重构之前的一个老我的项目,其中蕴含一个统计模块,须要把存储在MongoDB的数据通过接口显示在后端管理系统中。这些数据大多是以工夫为单位进行存储,例如:collectionName_202009collectionName_20200910,在老零碎中对工夫的解决应用Date类,简略理解了其中的工夫工具类,深感繁琐并决定应用Java8中的LocalDateTime和LocalDate重构此代码。
一、根本应用
- 获取以后工夫
// 2020-08-23T20:14:56.977 LocalDateTime localDateTime = LocalDateTime.now(); //2020-08-23 LocalDate localDate = LocalDate.now();
- 格式化工夫
LocalDateTime localDateTime = LocalDateTime.now(); DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE); // 2020-08-23 20:20:29 String timeStr = localDateTime.format(localDateTimeFormatter); LocalDate localDate = LocalDate.now(); DateTimeFormatter localDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 2020-08-23 String dateStr = localDate.format(localDateFormatter);
- 获取昨天、今天或者固定天数的工夫
LocalDateTime localDateTime = LocalDateTime.now(); DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE); // 明天 String time = localDateTime.format(localDateTimeFormatter); // 昨天 LocalDateTime yesterday = localDateTime.minusDays(1L); String yesterdayStr = yesterday.format(localDateTimeFormatter); // 先天 LocalDateTime tomorrow = localDateTime.plusDays(1L); String tomorrowStr = tomorrow.format(localDateTimeFormatter); // 天数加5 LocalDateTime timePlus = localDateTime.plusDays(5L); String timePlusStr = timePlus.format(localDateTimeFormatter); // 天数减5 LocalDateTime timeMinus = localDateTime.minusDays(5L); String timeMinusStr = timeMinus.format(localDateTimeFormatter);
在LocalDateTime的API中蕴含了对各个工夫单位的减少和缩小,如:
- 获取明天的开始工夫和完结工夫,准确到秒
DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE); // 2020-08-23 00:00:00 String start = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).format(localDateTimeFormatter); // 2020-08-23 23:59:59 String end = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).format(localDateTimeFormatter); // 这里的LocalDate.now()示意获取明天的开始工夫和完结工夫,也能够换做任何一天
- 获取当月的第一天和最初一天
// 这里应用LocalDate来获取日期 DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.SIMPLIFIED_CHINESE); LocalDate localDate = LocalDate.now(); LocalDate firstDay = localDate.with(TemporalAdjusters.firstDayOfMonth()); LocalDate lastDay = localDate.with(TemporalAdjusters.lastDayOfMonth());
- 将工夫字符串转为工夫或日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE); String str = "2018-08-09 20:10:10"; LocalDateTime localDateTime = LocalDateTime.parse(str, formatter); LocalDate localDate = LocalDate.parse(str, formatter);
- 计算日期距离
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.SIMPLIFIED_CHINESE); String str = "2020-09-02"; LocalDate localDate = LocalDate.parse(str, formatter); long until = LocalDate.now().until(localDate, ChronoUnit.DAYS);
原文地址:https://www.haicheng.website/...