1 localDate 格式為年月日 yyyy-MM-dd
1.1 獲取當前時間
//獲取當前時間 LocalDate now = LocalDate.now();
1.2 string 轉 LocalDate
//string 轉 localDate LocalDate time = LocalDate.parse("2021-10-03");
1.3 日期所屬的月份的第一天
LocalDate time = LocalDate.parse("2021-10-03"); //時間所屬月份的第一天 LocalDate firstDayOfMonth = time.with(TemporalAdjusters.firstDayOfMonth());
1.4 日期所屬月份最后一天
//時間所屬月份的最后一天 LocalDate lastDayOfMonth = time.with(TemporalAdjusters.lastDayOfMonth());
1.5 時間下個月的第一天
//時間下個月的第一天 LocalDate firstDayOfNextMonth = time.with(TemporalAdjusters.firstDayOfNextMonth());
1.6 時間下一年的第一天
//時間 下一年的第一天 LocalDate firstDayOfNextYear = time.with(TemporalAdjusters.firstDayOfNextYear());
1.7 時間所屬的年份的第一天
//時間所屬年份的第一天 LocalDate firstDayOfYear = time.with(TemporalAdjusters.firstDayOfYear());
1.8 時間所屬年份的最后一天
//時間所屬年份的第一天 LocalDate lastDayOfYear = time.with(TemporalAdjusters.lastDayOfYear());
1.9 時間所屬月份的周 的日期
//時間的第一個周末 LocalDate dayOfWeekInMonth = time.with(TemporalAdjusters.dayOfWeekInMonth(1, DayOfWeek.SUNDAY)); //時間的第二個周三 LocalDate dayOfWeekInMonth1 = time.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.WEDNESDAY)); //時間 上個月的最后一周 LocalDate with = time.with(TemporalAdjusters.dayOfWeekInMonth(0, DayOfWeek.SUNDAY));
1.10 時間所屬月份的第一個周幾
//時間所屬月份第一個 周幾 示例:第一個周一日期 LocalDate firstInMonth = time.with(TemporalAdjusters.firstInMonth(DayOfWeek.WEDNESDAY));
1.11 時間所屬月份的最后一個周幾的日期
//時間所屬月份最后一個周幾 日期 示例:最后一個周天日期 LocalDate lastInMonth = time.with(TemporalAdjusters.lastInMonth(DayOfWeek.SUNDAY));
1.12 時間的下一個周幾
1.13 時間的上一個周幾
//時間 上一個周幾 日期 示例:該時間的 上一個周日 日期 LocalDate previousSunday = time.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY));
1.14 獲取時間的 月 周 日
// 獲取時間的具體的 月 周 日 Month month = time.getMonth(); DayOfWeek dayOfWeek = time.getDayOfWeek(); int dayOfMonth = time.getDayOfMonth();
1.15 時間的 年月日 加減
/** * 時間 年月日的 加減 */ //減 LocalDate minusDays = time.minusDays(3); LocalDate localDate1 = time.minusWeeks(1); LocalDate minusMonths = time.minusMonths(2); LocalDate minusYears = time.minusYears(1); //加 LocalDate localDate = time.plusDays(7); LocalDate plusWeeks = time.plusWeeks(1); LocalDate months = time.plusMonths(1); LocalDate plusYears = time.plusYears(5);
1.16 時間的比較 之前-之后-相等-天數差
/** * 時間 的 比較 */ LocalDate three = LocalDate.parse("2021-10-03"); LocalDate four = LocalDate.parse("2021-10-23"); //天數差 int i = three.compareTo(four); //是否之后 boolean after = three.isAfter(four); //是否之前 boolean before = three.isBefore(four); //是否相等 boolean equals = three.equals(four); //時間的月份 比較 boolean equalsMonth = three.getMonth().equals(four.getMonth());
1.17 時間轉換格式
/** * 時間轉換格式 */ // LocalDate 轉 string String s = three.toString(); // LocalDate 轉 date Date date = Date.from(three.atStartOfDay(ZoneOffset.ofHours(8)).toInstant()); //LocalDate 轉 localDateTime //獲取時分秒 LocalTime localTime = LocalTime.now(); //LocalDateTime= 年月日+時分秒 LocalDateTime localDateTime = LocalDateTime.of(three,localTime);
測試用例:
@Test public void timeTest() { //獲取當前時間 LocalDate now = LocalDate.now(); //string 轉 localDate LocalDate time = LocalDate.parse("2021-10-03"); //時間所屬月份的第一天 LocalDate firstDayOfMonth = time.with(TemporalAdjusters.firstDayOfMonth()); //時間所屬月份的最后一天 LocalDate lastDayOfMonth = time.with(TemporalAdjusters.lastDayOfMonth()); //時間下個月的第一天 LocalDate firstDayOfNextMonth = time.with(TemporalAdjusters.firstDayOfNextMonth()); //時間 下一年的第一天 LocalDate firstDayOfNextYear = time.with(TemporalAdjusters.firstDayOfNextYear()); //時間所屬年份的第一天 LocalDate firstDayOfYear = time.with(TemporalAdjusters.firstDayOfYear()); //時間所屬年份的第一天 LocalDate lastDayOfYear = time.with(TemporalAdjusters.lastDayOfYear()); //時間的第一個周末 LocalDate dayOfWeekInMonth = time.with(TemporalAdjusters.dayOfWeekInMonth(1, DayOfWeek.SUNDAY)); //時間的第二個周三 LocalDate dayOfWeekInMonth1 = time.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.WEDNESDAY)); //時間 上個月的最后一周 LocalDate with = time.with(TemporalAdjusters.dayOfWeekInMonth(0, DayOfWeek.SUNDAY)); //時間所屬月份第一個 周幾 示例:第一個周一日期 LocalDate firstInMonth = time.with(TemporalAdjusters.firstInMonth(DayOfWeek.WEDNESDAY)); //時間所屬月份最后一個周幾 日期 示例:最后一個周天日期 LocalDate lastInMonth = time.with(TemporalAdjusters.lastInMonth(DayOfWeek.SUNDAY)); //時間下一個周幾 日期 示例:該時間的下一個周日 日期 LocalDate nextSunday = time.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)); //時間 上一個周幾 日期 示例:該時間的 上一個周日 日期 LocalDate previousSunday = time.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY)); // 獲取時間的具體的 月 周 日 Month month = time.getMonth(); DayOfWeek dayOfWeek = time.getDayOfWeek(); int dayOfMonth = time.getDayOfMonth(); /** * 時間 年月日的 加減 */ //減 LocalDate minusDays = time.minusDays(3); LocalDate localDate1 = time.minusWeeks(1); LocalDate minusMonths = time.minusMonths(2); LocalDate minusYears = time.minusYears(1); //加 LocalDate localDate = time.plusDays(7); LocalDate plusWeeks = time.plusWeeks(1); LocalDate months = time.plusMonths(1); LocalDate plusYears = time.plusYears(5); /** * 時間 的 比較 */ LocalDate three = LocalDate.parse("2021-10-03"); LocalDate four = LocalDate.parse("2021-10-23"); //天數差 int i = three.compareTo(four); //是否之后 boolean after = three.isAfter(four); //是否之前 boolean before = three.isBefore(four); //是否相等 boolean equals = three.equals(four); //時間的月份 比較 boolean equalsMonth = three.getMonth().equals(four.getMonth()); /** * 時間轉換格式 */ // LocalDate 轉 string String s = three.toString(); // LocalDate 轉 date Date date = Date.from(three.atStartOfDay(ZoneOffset.ofHours(8)).toInstant()); //LocalDate 轉 localDateTime //獲取時分秒 LocalTime localTime = LocalTime.now(); //LocalDateTime= 年月日+時分秒 LocalDateTime localDateTime = LocalDateTime.of(three,localTime); }
更新:2022-06-22
獲取兩個日期中間的所有天數,所有月份
/** * 獲取一段時間的每一天日期或者月份 * 開始時間要小於結束時間 時間格式 日 2022-06-12 月 2022-06 * @param start * @param end * @return * @throws Exception */ public static List<String> getBetweenDate(String start, String end, Integer type) { List<String> list = new ArrayList<>(); if(start.length()<8){ start+="-01"; end+="-01"; } LocalDate startDate = LocalDate.parse(start); LocalDate endDate = LocalDate.parse(end); long distance = 0L; if (type == 1) { distance = ChronoUnit.DAYS.between(startDate, endDate); Stream.iterate(startDate, d -> d.plusDays(1)).limit(distance + 1).forEach(f -> list.add(f.toString())); } else if(type==2) { distance = ChronoUnit.MONTHS.between(startDate, endDate); Stream.iterate(startDate, d -> d.plusMonths(1)).limit(distance + 1).forEach(f -> list.add(f.toString().substring(0,7))); } return list; }
@Test
void test(){
LocalDate localDate = LocalDate.now();
LocalDate l = LocalDate.parse("2022-01-01");
List<String> day = getBetweenDate(l.toString(), localDate.toString(),1);
System.out.println("day = " + day);
List<String> month = getBetweenDate(l.toString(), localDate.toString(),2);
System.out.println("month = " + month);
}