DateUtils.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package cn.com.ctop.common.utils;
  2. import java.sql.Timestamp;
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.*;
  6. public class DateUtils {
  7. public static List<Map<String, String>> getDateDayRange(String startDate, String endDate) throws ParseException {
  8. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  9. String splitDate = DateUtils.addDay(endDate, -1);
  10. splitDate = DateUtils.addDay(splitDate, 1);
  11. if (DateUtils.compareDate(startDate, splitDate) >= 0) {
  12. Map<String, String> map = new HashMap<String, String>();
  13. map.put("startDate", startDate);
  14. map.put("endDate", endDate);
  15. list.add(map);
  16. } else {
  17. while (DateUtils.compareDate(startDate, splitDate) < 0 || DateUtils.compareDate(startDate, endDate) <= 0) {
  18. Map<String, String> map = new HashMap<String, String>();
  19. map.put("startDate", splitDate);
  20. map.put("endDate", endDate);
  21. list.add(map);
  22. splitDate = DateUtils.addDay(splitDate, -1);
  23. endDate = DateUtils.addDay(endDate, -1);
  24. if (DateUtils.compareDate(startDate, splitDate) > 0) {
  25. splitDate = startDate;
  26. }
  27. }
  28. }
  29. return list;
  30. }
  31. public static List<Map<String, String>> getDateWeekRange(String startDate, String endDate) throws ParseException {
  32. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  33. String splitDate = DateUtils.addWeek(endDate, -1);
  34. splitDate = DateUtils.addDay(splitDate, 1);
  35. if (DateUtils.compareDate(startDate, splitDate) >= 0) {
  36. Map<String, String> map = new HashMap<String, String>();
  37. map.put("startDate", startDate);
  38. map.put("endDate", endDate);
  39. list.add(map);
  40. } else {
  41. while (DateUtils.compareDate(startDate, splitDate) < 0 || DateUtils.compareDate(startDate, endDate) <= 0) {
  42. Map<String, String> map = new HashMap<String, String>();
  43. map.put("startDate", splitDate);
  44. map.put("endDate", endDate);
  45. list.add(map);
  46. splitDate = DateUtils.addWeek(splitDate, -1);
  47. endDate = DateUtils.addWeek(endDate, -1);
  48. if (DateUtils.compareDate(startDate, splitDate) > 0) {
  49. splitDate = startDate;
  50. }
  51. }
  52. }
  53. return list;
  54. }
  55. public static List<Map<String, String>> getDateMonthRange(String startDate, String endDate) throws ParseException {
  56. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  57. String splitDate = DateUtils.addMonth(endDate, -1);
  58. splitDate = DateUtils.addDay(splitDate, 1);
  59. if (DateUtils.compareDate(startDate, splitDate) >= 0) {
  60. Map<String, String> map = new HashMap<String, String>();
  61. map.put("startDate", startDate);
  62. map.put("endDate", endDate);
  63. list.add(map);
  64. } else {
  65. while (DateUtils.compareDate(startDate, splitDate) < 0 || DateUtils.compareDate(startDate, endDate) <= 0) {
  66. Map<String, String> map = new HashMap<String, String>();
  67. map.put("startDate", splitDate);
  68. map.put("endDate", endDate);
  69. list.add(map);
  70. splitDate = DateUtils.addMonth(splitDate, -1);
  71. endDate = DateUtils.addMonth(endDate, -1);
  72. if (DateUtils.compareDate(startDate, splitDate) > 0) {
  73. splitDate = startDate;
  74. }
  75. }
  76. }
  77. return list;
  78. }
  79. public static String addMonth(String dateString, int month) throws ParseException {
  80. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  81. Date date = sdf.parse(dateString);
  82. Calendar calendar = Calendar.getInstance();
  83. calendar.setTime(date);
  84. calendar.add(Calendar.MONTH, month);
  85. return sdf.format(calendar.getTime());
  86. }
  87. public static String addWeek(String dateString, int week) throws ParseException {
  88. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  89. Date date = sdf.parse(dateString);
  90. Calendar calendar = Calendar.getInstance();
  91. calendar.setTime(date);
  92. calendar.add(Calendar.WEEK_OF_YEAR, week);
  93. return sdf.format(calendar.getTime());
  94. }
  95. public static String addDay(String dateString, int day) throws ParseException {
  96. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  97. Date date = sdf.parse(dateString);
  98. Calendar calendar = Calendar.getInstance();
  99. calendar.setTime(date);
  100. calendar.add(Calendar.DAY_OF_YEAR, day);
  101. return sdf.format(calendar.getTime());
  102. }
  103. public static Date addDay(Date date, int day) {
  104. Calendar calendar = Calendar.getInstance();
  105. calendar.setTime(date);
  106. calendar.add(Calendar.DAY_OF_YEAR, day);
  107. return calendar.getTime();
  108. }
  109. public static Date addSecond(Date date, int seconds) {
  110. Calendar calendar = Calendar.getInstance();
  111. calendar.setTime(date);
  112. calendar.add(Calendar.SECOND, seconds);
  113. return calendar.getTime();
  114. }
  115. public static int compareDate(String firstDateString, String secondDateString) throws ParseException {
  116. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  117. Date firstDate = sdf.parse(firstDateString);
  118. Date secondDate = sdf.parse(secondDateString);
  119. long first = firstDate.getTime();
  120. long second = secondDate.getTime();
  121. return first == second ? 0 : (first > second ? 1 : -1);
  122. }
  123. public static String timeStamp2Date(Timestamp timeLong) {
  124. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//要转换的时间格式
  125. Date date;
  126. try {
  127. date = sdf.parse(sdf.format(timeLong));
  128. return sdf.format(date);
  129. } catch (ParseException e) {
  130. e.printStackTrace();
  131. return null;
  132. }
  133. }
  134. public static String timeStamp2Date(long currentTimeMillis) {
  135. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//要转换的时间格式
  136. Date date;
  137. try {
  138. date = sdf.parse(sdf.format(currentTimeMillis));
  139. return sdf.format(date);
  140. } catch (ParseException e) {
  141. e.printStackTrace();
  142. return null;
  143. }
  144. }
  145. }