DateUtils.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package com.sqx.common.utils;
  2. import org.apache.commons.lang.StringUtils;
  3. import org.joda.time.DateTime;
  4. import org.joda.time.LocalDate;
  5. import org.joda.time.format.DateTimeFormat;
  6. import org.joda.time.format.DateTimeFormatter;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9. /**
  10. * 日期处理
  11. *
  12. */
  13. public class DateUtils {
  14. /** 时间格式(yyyy-MM-dd) */
  15. public final static String DATE_PATTERN = "yyyy-MM-dd";
  16. /** 时间格式(yyyy-MM-dd HH:mm:ss) */
  17. public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
  18. public final static String TIME_PATTERN1 = "HH:mm";
  19. /**
  20. * 日期格式化 日期格式为:yyyy-MM-dd
  21. * @param date 日期
  22. * @return 返回yyyy-MM-dd格式日期
  23. */
  24. public static String format(Date date) {
  25. return format(date, DATE_TIME_PATTERN);
  26. }
  27. /**
  28. * 日期格式化 日期格式为:yyyy-MM-dd
  29. * @param date 日期
  30. * @param pattern 格式,如:DateUtils.DATE_TIME_PATTERN
  31. * @return 返回yyyy-MM-dd格式日期
  32. */
  33. public static String format(Date date, String pattern) {
  34. if(date != null){
  35. SimpleDateFormat df = new SimpleDateFormat(pattern);
  36. return df.format(date);
  37. }
  38. return null;
  39. }
  40. /**
  41. * 字符串转换成日期
  42. * @param strDate 日期字符串
  43. * @param pattern 日期的格式,如:DateUtils.DATE_TIME_PATTERN
  44. */
  45. public static Date stringToDate(String strDate, String pattern) {
  46. if (StringUtils.isBlank(strDate)){
  47. return null;
  48. }
  49. DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern);
  50. return fmt.parseLocalDateTime(strDate).toDate();
  51. }
  52. /**
  53. * 根据周数,获取开始日期、结束日期
  54. * @param week 周期 0本周,-1上周,-2上上周,1下周,2下下周
  55. * @return 返回date[0]开始日期、date[1]结束日期
  56. */
  57. public static Date[] getWeekStartAndEnd(int week) {
  58. DateTime dateTime = new DateTime();
  59. LocalDate date = new LocalDate(dateTime.plusWeeks(week));
  60. date = date.dayOfWeek().withMinimumValue();
  61. Date beginDate = date.toDate();
  62. Date endDate = date.plusDays(6).toDate();
  63. return new Date[]{beginDate, endDate};
  64. }
  65. /**
  66. * 对日期的【秒】进行加/减
  67. *
  68. * @param date 日期
  69. * @param seconds 秒数,负数为减
  70. * @return 加/减几秒后的日期
  71. */
  72. public static Date addDateSeconds(Date date, int seconds) {
  73. DateTime dateTime = new DateTime(date);
  74. return dateTime.plusSeconds(seconds).toDate();
  75. }
  76. /**
  77. * 对日期的【分钟】进行加/减
  78. *
  79. * @param date 日期
  80. * @param minutes 分钟数,负数为减
  81. * @return 加/减几分钟后的日期
  82. */
  83. public static Date addDateMinutes(Date date, int minutes) {
  84. DateTime dateTime = new DateTime(date);
  85. return dateTime.plusMinutes(minutes).toDate();
  86. }
  87. /**
  88. * 对日期的【小时】进行加/减
  89. *
  90. * @param date 日期
  91. * @param hours 小时数,负数为减
  92. * @return 加/减几小时后的日期
  93. */
  94. public static Date addDateHours(Date date, int hours) {
  95. DateTime dateTime = new DateTime(date);
  96. return dateTime.plusHours(hours).toDate();
  97. }
  98. /**
  99. * 对日期的【天】进行加/减
  100. *
  101. * @param date 日期
  102. * @param days 天数,负数为减
  103. * @return 加/减几天后的日期
  104. */
  105. public static Date addDateDays(Date date, int days) {
  106. DateTime dateTime = new DateTime(date);
  107. return dateTime.plusDays(days).toDate();
  108. }
  109. /**
  110. * 对日期的【周】进行加/减
  111. *
  112. * @param date 日期
  113. * @param weeks 周数,负数为减
  114. * @return 加/减几周后的日期
  115. */
  116. public static Date addDateWeeks(Date date, int weeks) {
  117. DateTime dateTime = new DateTime(date);
  118. return dateTime.plusWeeks(weeks).toDate();
  119. }
  120. /**
  121. * 对日期的【月】进行加/减
  122. *
  123. * @param date 日期
  124. * @param months 月数,负数为减
  125. * @return 加/减几月后的日期
  126. */
  127. public static Date addDateMonths(Date date, int months) {
  128. DateTime dateTime = new DateTime(date);
  129. return dateTime.plusMonths(months).toDate();
  130. }
  131. /**
  132. * 对日期的【年】进行加/减
  133. *
  134. * @param date 日期
  135. * @param years 年数,负数为减
  136. * @return 加/减几年后的日期
  137. */
  138. public static Date addDateYears(Date date, int years) {
  139. DateTime dateTime = new DateTime(date);
  140. return dateTime.plusYears(years).toDate();
  141. }
  142. }