PartnerDateUtils.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.ydtech.modules.partner.utils;
  2. import java.time.LocalDate;
  3. import java.time.LocalDateTime;
  4. import java.time.ZoneId;
  5. import java.time.temporal.ChronoUnit;
  6. import java.util.Date;
  7. public class PartnerDateUtils {
  8. public static boolean isWithinDays(Date date, int days) {
  9. LocalDate targetDate = date.toInstant()
  10. .atZone(ZoneId.systemDefault())
  11. .toLocalDate();
  12. return Math.abs(ChronoUnit.DAYS.between(LocalDate.now(), targetDate)) <= days;
  13. }
  14. public static Date addDaysToday(Date date, int days) {
  15. LocalDateTime localDate = date.toInstant()
  16. .atZone(ZoneId.systemDefault())
  17. .toLocalDateTime();
  18. LocalDateTime newLocalDate = localDate.plusDays(days);
  19. LocalDateTime newDateTime = newLocalDate.withHour(0)
  20. .withMinute(0)
  21. .withSecond(0)
  22. .withNano(0);
  23. return Date.from(newDateTime.atZone(ZoneId.systemDefault()).toInstant());
  24. }
  25. public static Date addDays(Date date, int days) {
  26. LocalDateTime localDate = date.toInstant()
  27. .atZone(ZoneId.systemDefault())
  28. .toLocalDateTime();
  29. LocalDateTime newLocalDate = localDate.plusDays(days);
  30. LocalDateTime endOfDay = newLocalDate.withHour(23)
  31. .withMinute(59)
  32. .withSecond(59)
  33. .withNano(999_999_999);
  34. return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
  35. }
  36. /**
  37. * 目标日期在今天之后
  38. * @param date
  39. * @return
  40. */
  41. public static boolean isAfter(Date date){
  42. LocalDateTime localDate = date.toInstant()
  43. .atZone(ZoneId.systemDefault())
  44. .toLocalDateTime();
  45. return localDate.isAfter(LocalDateTime.now());
  46. }
  47. /**
  48. * 目标日期在今天之前
  49. * @param date
  50. * @return
  51. */
  52. public static boolean isBefore(Date date){
  53. LocalDateTime localDate = date.toInstant()
  54. .atZone(ZoneId.systemDefault())
  55. .toLocalDateTime();
  56. return localDate.isBefore(LocalDateTime.now());
  57. }
  58. /**
  59. * 描述: 计算两个日期之间的天数
  60. * @param date
  61. * @return
  62. */
  63. public static Long dateDifference(Date date){
  64. LocalDate pastLocalDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
  65. return ChronoUnit.DAYS.between(pastLocalDate, LocalDate.now());
  66. }
  67. public static boolean isSameDay(Date date) {
  68. LocalDate currentDate = LocalDate.now();
  69. LocalDate compareLocalDate = date.toInstant()
  70. .atZone(ZoneId.systemDefault())
  71. .toLocalDate();
  72. return currentDate.equals(compareLocalDate.plusDays(1));
  73. }
  74. }