Dateutils.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package com.fdkankan.sale.util;
  2. import org.apache.commons.lang3.StringUtils;
  3. import java.text.SimpleDateFormat;
  4. import java.util.ArrayList;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7. import java.util.List;
  8. public class Dateutils {
  9. public static int DAY = Calendar.DAY_OF_MONTH;
  10. public static int WEEK = Calendar.WEEK_OF_MONTH;
  11. public static int MONTH = Calendar.MONTH;
  12. /**
  13. * 获取指定时间区间的所有数据(包含日期和月份)
  14. * @param dBegin
  15. * @param dEnd
  16. * @param rule 日历规则 如:Calendar.DAY_OF_MONTH
  17. * @return
  18. */
  19. public static List<Date> findDates(Date dBegin, Date dEnd, int rule) {
  20. List<Date> lDate = new ArrayList<>();
  21. if (dEnd.before(dBegin)){
  22. return lDate;
  23. }
  24. Calendar calBegin = Calendar.getInstance();
  25. // 使用给定的 Date 设置此 Calendar 的时间
  26. calBegin.setTime(dBegin);
  27. Calendar calEnd = Calendar.getInstance();
  28. // 使用给定的 Date 设置此 Calendar 的时间
  29. calEnd.setTime(dEnd);
  30. // 测试此日期是否在指定日期之后
  31. while (dEnd.after(calBegin.getTime())) {
  32. // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
  33. Date time = calBegin.getTime();
  34. if(rule == Calendar.WEEK_OF_MONTH){
  35. time = getMonday(time);
  36. }
  37. lDate.add(time);
  38. calBegin.add(rule, 1);
  39. }
  40. return lDate;
  41. }
  42. public static List<String> findDatesStr(Date dBegin, Date dEnd, int rule) {
  43. List<String> datesStr = new ArrayList<>();
  44. List<Date> dates = findDates(dBegin, dEnd, rule);
  45. for (Date date : dates) {
  46. String day ;
  47. if(rule == MONTH){
  48. day =getMonthDate(date);
  49. }else {
  50. day = getDayDate(date);
  51. }
  52. datesStr.add(day);
  53. }
  54. return datesStr;
  55. }
  56. public static Date getDate(String date) {
  57. try {
  58. return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
  59. }catch (Exception e){
  60. e.printStackTrace();
  61. }
  62. return new Date();
  63. }
  64. public static Date getMonday(Date date) {
  65. Calendar calBegin = Calendar.getInstance();
  66. calBegin.setTime(date);
  67. calBegin.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //周一
  68. return calBegin.getTime();
  69. }
  70. public static String getDate(Date date) {
  71. return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
  72. }
  73. public static String getDateN(Date date) {
  74. return new SimpleDateFormat("yyyyMMddHHmmss").format(date);
  75. }
  76. public static String getMonthDate(Date date) {
  77. return new SimpleDateFormat("yyyy-MM").format(date);
  78. }
  79. public static Date getMonthDate(String date) {
  80. try {
  81. return new SimpleDateFormat("yyyy-MM").parse(date);
  82. }catch (Exception e){
  83. e.printStackTrace();
  84. }
  85. return new Date();
  86. }
  87. public static String getDayDate(Date date) {
  88. return new SimpleDateFormat("yyyy-MM-dd").format(date);
  89. }
  90. public static String getDayZeroDate(Date date) {
  91. return new SimpleDateFormat("yyyy-MM-dd").format(date) +" 00:00:00";
  92. }
  93. public static String getHalfYearStr() {
  94. return new SimpleDateFormat("yyyy-MM-dd").format(getHalfYear())+" 00:00:00";
  95. }
  96. public static Date getHalfYear() {
  97. Calendar c = Calendar.getInstance();
  98. c.setTime(new Date());
  99. c.add(Calendar.MONTH, -6);
  100. return c.getTime();
  101. }
  102. public static String getLastMonTh(Date date){
  103. Calendar ca = Calendar.getInstance();
  104. ca.setTime(date);
  105. ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
  106. return new SimpleDateFormat("yyyy-MM-dd").format(ca.getTime()) +" 23:59:59";
  107. }
  108. public static String formatStartTime(String startTime) {
  109. if(StringUtils.isBlank(startTime)){
  110. startTime = Dateutils.getHalfYearStr();
  111. }
  112. if(startTime.length() <12){ //月,开始时间到1号 0点
  113. startTime += " 00:00:00";
  114. }
  115. return startTime;
  116. }
  117. public static String formatEndTime(String endTime) {
  118. if(StringUtils.isBlank(endTime)){
  119. endTime = Dateutils.getDate(new Date());
  120. }
  121. if(endTime.length() <12 ){ //月,开始时间到1号 0点
  122. endTime += " 23:59:59";
  123. }
  124. return endTime;
  125. }
  126. public static String getStartTime(String startTime) {
  127. if(StringUtils.isBlank(startTime)){
  128. return null;
  129. }
  130. if(startTime.length() > 12){
  131. return startTime;
  132. }
  133. return startTime +" 00:00:00";
  134. }
  135. public static String getEndTime(String endTime) {
  136. if(StringUtils.isBlank(endTime)){
  137. return null;
  138. }
  139. if(endTime.length() > 12){
  140. return endTime;
  141. }
  142. return endTime +" 23:59:59";
  143. }
  144. }