PartnerDateUtils.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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.format.DateTimeFormatter;
  6. import java.time.temporal.ChronoUnit;
  7. import java.util.Date;
  8. public class PartnerDateUtils {
  9. public static boolean isWithinDays(Date date, int days) {
  10. LocalDate targetDate = date.toInstant()
  11. .atZone(ZoneId.systemDefault())
  12. .toLocalDate();
  13. return Math.abs(ChronoUnit.DAYS.between(LocalDate.now(), targetDate)) <= days;
  14. }
  15. public static Date addDaysToday(Date date, int days) {
  16. LocalDateTime localDate = date.toInstant()
  17. .atZone(ZoneId.systemDefault())
  18. .toLocalDateTime();
  19. LocalDateTime newLocalDate = localDate.plusDays(days);
  20. LocalDateTime newDateTime = newLocalDate.withHour(0)
  21. .withMinute(0)
  22. .withSecond(0)
  23. .withNano(0);
  24. return Date.from(newDateTime.atZone(ZoneId.systemDefault()).toInstant());
  25. }
  26. public static Date addDays(Date date, int days) {
  27. LocalDateTime localDate = date.toInstant()
  28. .atZone(ZoneId.systemDefault())
  29. .toLocalDateTime();
  30. LocalDateTime newLocalDate = localDate.plusDays(days);
  31. LocalDateTime endOfDay = newLocalDate.withHour(23)
  32. .withMinute(59)
  33. .withSecond(59)
  34. .withNano(999_999_999);
  35. return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
  36. }
  37. /**
  38. * 目标日期在今天之后
  39. * @param date
  40. * @return
  41. */
  42. public static boolean isAfter(Date date){
  43. LocalDateTime localDate = date.toInstant()
  44. .atZone(ZoneId.systemDefault())
  45. .toLocalDateTime();
  46. return localDate.isAfter(LocalDateTime.now());
  47. }
  48. public static boolean before(Date date){
  49. if (date.before( new Date())) {
  50. System.out.println("目标时间在当前时间之前");
  51. return true;
  52. } else {
  53. System.out.println("目标时间在当前时间之后或相同");
  54. return false;
  55. }
  56. }
  57. /**
  58. * 目标日期在今天之前
  59. * @param date
  60. * @return
  61. */
  62. public static boolean isBefore(Date date){
  63. LocalDateTime localDate = date.toInstant()
  64. .atZone(ZoneId.systemDefault())
  65. .toLocalDateTime();
  66. return localDate.isBefore(LocalDateTime.now());
  67. }
  68. /**
  69. * 描述: 计算两个日期之间的天数
  70. * @param date
  71. * @return
  72. */
  73. public static Long dateDifference(LocalDate date){
  74. return ChronoUnit.DAYS.between(LocalDate.now(),date);
  75. }
  76. public static Long daysBetween (LocalDate date){
  77. return ChronoUnit.DAYS.between(date,LocalDate.now());
  78. }
  79. public static boolean isSameDay(Date date) {
  80. LocalDate currentDate = LocalDate.now();
  81. LocalDate compareLocalDate = date.toInstant()
  82. .atZone(ZoneId.systemDefault())
  83. .toLocalDate();
  84. return currentDate.equals(compareLocalDate.plusDays(1));
  85. }
  86. /**
  87. * 描述: 生成到期时间
  88. * @param startTime
  89. * @param khDays
  90. * @return
  91. */
  92. public static Date generateEndTime(Date startTime,Integer khDays) {
  93. LocalDateTime localDateTime = startTime.toInstant()
  94. .atZone(ZoneId.systemDefault())
  95. .toLocalDateTime();
  96. LocalDateTime resultDateTime = localDateTime.plusDays(khDays).minusSeconds(1);
  97. return Date.from(resultDateTime.atZone(ZoneId.systemDefault()).toInstant());
  98. }
  99. public static String timeExample(Integer khDays) {
  100. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  101. LocalDate minus = LocalDate.now().minus(khDays, ChronoUnit.DAYS);
  102. return formatter.format( minus);
  103. }
  104. }