1 package demoone; 2
3 import java.sql.Timestamp; 4 import java.text.ParseException; 5 import java.text.SimpleDateFormat; 6 import java.util.ArrayList; 7 import java.util.Calendar; 8 import java.util.Date; 9 import java.util.GregorianCalendar; 10 import java.util.List; 11
12 public class DateUtils { 13 //獲取當天的開始時間
14 public static java.util.Date getDayBegin() { 15 Calendar cal = new GregorianCalendar(); 16 cal.set(Calendar.HOUR_OF_DAY, 0); 17 cal.set(Calendar.MINUTE, 0); 18 cal.set(Calendar.SECOND, 0); 19 cal.set(Calendar.MILLISECOND, 0); 20 return cal.getTime(); 21 } 22 //獲取當天的結束時間
23 public static java.util.Date getDayEnd() { 24 Calendar cal = new GregorianCalendar(); 25 cal.set(Calendar.HOUR_OF_DAY, 23); 26 cal.set(Calendar.MINUTE, 59); 27 cal.set(Calendar.SECOND, 59); 28 return cal.getTime(); 29 } 30 //獲取昨天的開始時間
31 public static Date getBeginDayOfYesterday() { 32 Calendar cal = new GregorianCalendar(); 33 cal.setTime(getDayBegin()); 34 cal.add(Calendar.DAY_OF_MONTH, -1); 35 return cal.getTime(); 36 } 37 //獲取昨天的結束時間
38 public static Date getEndDayOfYesterDay() { 39 Calendar cal = new GregorianCalendar(); 40 cal.setTime(getDayEnd()); 41 cal.add(Calendar.DAY_OF_MONTH, -1); 42 return cal.getTime(); 43 } 44 //獲取明天的開始時間
45 public static Date getBeginDayOfTomorrow() { 46 Calendar cal = new GregorianCalendar(); 47 cal.setTime(getDayBegin()); 48 cal.add(Calendar.DAY_OF_MONTH, 1); 49
50 return cal.getTime(); 51 } 52 //獲取明天的結束時間
53 public static Date getEndDayOfTomorrow() { 54 Calendar cal = new GregorianCalendar(); 55 cal.setTime(getDayEnd()); 56 cal.add(Calendar.DAY_OF_MONTH, 1); 57 return cal.getTime(); 58 } 59 //獲取本週的開始時間
60 public static Date getBeginDayOfWeek() { 61 Date date = new Date(); 62 if (date == null) { 63 return null; 64 } 65 Calendar cal = Calendar.getInstance(); 66 cal.setTime(date); 67 int dayofweek = cal.get(Calendar.DAY_OF_WEEK); 68 if (dayofweek == 1) { 69 dayofweek += 7; 70 } 71 cal.add(Calendar.DATE, 2 - dayofweek); 72 return getDayStartTime(cal.getTime()); 73 } 74 //獲取本週的結束時間
75 public static Date getEndDayOfWeek(){ 76 Calendar cal = Calendar.getInstance(); 77 cal.setTime(getBeginDayOfWeek()); 78 cal.add(Calendar.DAY_OF_WEEK, 6); 79 Date weekEndSta = cal.getTime(); 80 return getDayEndTime(weekEndSta); 81 } 82 //獲取本月的開始時間
83 public static Date getBeginDayOfMonth() { 84 Calendar calendar = Calendar.getInstance(); 85 calendar.set(getNowYear(), getNowMonth() - 1, 1); 86 return getDayStartTime(calendar.getTime()); 87 } 88 //獲取本月的結束時間
89 public static Date getEndDayOfMonth() { 90 Calendar calendar = Calendar.getInstance(); 91 calendar.set(getNowYear(), getNowMonth() - 1, 1); 92 int day = calendar.getActualMaximum(5); 93 calendar.set(getNowYear(), getNowMonth() - 1, day); 94 return getDayEndTime(calendar.getTime()); 95 } 96 //獲取本年的開始時間
97 public static java.util.Date getBeginDayOfYear() { 98 Calendar cal = Calendar.getInstance(); 99 cal.set(Calendar.YEAR, getNowYear()); 100 // cal.set
101 cal.set(Calendar.MONTH, Calendar.JANUARY); 102 cal.set(Calendar.DATE, 1); 103
104 return getDayStartTime(cal.getTime()); 105 } 106 //獲取本年的結束時間
107 public static java.util.Date getEndDayOfYear() { 108 Calendar cal = Calendar.getInstance(); 109 cal.set(Calendar.YEAR, getNowYear()); 110 cal.set(Calendar.MONTH, Calendar.DECEMBER); 111 cal.set(Calendar.DATE, 31); 112 return getDayEndTime(cal.getTime()); 113 } 114 //獲取某個日期的開始時間
115 public static Timestamp getDayStartTime(Date d) { 116 Calendar calendar = Calendar.getInstance(); 117 if(null != d) calendar.setTime(d); 118 calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); 119 calendar.set(Calendar.MILLISECOND, 0); 120 return new Timestamp(calendar.getTimeInMillis()); 121 } 122 //獲取某個日期的結束時間
123 public static Timestamp getDayEndTime(Date d) { 124 Calendar calendar = Calendar.getInstance(); 125 if(null != d) calendar.setTime(d); 126 calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); 127 calendar.set(Calendar.MILLISECOND, 999); 128 return new Timestamp(calendar.getTimeInMillis()); 129 } 130 //獲取今年是哪一年
131 public static Integer getNowYear() { 132 Date date = new Date(); 133 GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); 134 gc.setTime(date); 135 return Integer.valueOf(gc.get(1)); 136 } 137 //獲取本月是哪一月
138 public static int getNowMonth() { 139 Date date = new Date(); 140 GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); 141 gc.setTime(date); 142 return gc.get(2) + 1; 143 } 144 //兩個日期相減獲得的天數
145 public static int getDiffDays(Date beginDate, Date endDate) { 146
147 if (beginDate == null || endDate == null) { 148 throw new IllegalArgumentException("getDiffDays param is null!"); 149 } 150
151 long diff = (endDate.getTime() - beginDate.getTime()) 152 / (1000 * 60 * 60 * 24); 153
154 int days = new Long(diff).intValue(); 155
156 return days; 157 } 158 //兩個日期相減獲得的毫秒數
159 public static long dateDiff(Date beginDate, Date endDate) { 160 long date1ms = beginDate.getTime(); 161 long date2ms = endDate.getTime(); 162 return date2ms - date1ms; 163 } 164 //獲取兩個日期中的最大日期
165 public static Date max(Date beginDate, Date endDate) { 166 if (beginDate == null) { 167 return endDate; 168 } 169 if (endDate == null) { 170 return beginDate; 171 } 172 if (beginDate.after(endDate)) { 173 return beginDate; 174 } 175 return endDate; 176 } 177 //獲取兩個日期中的最小日期
178 public static Date min(Date beginDate, Date endDate) { 179 if (beginDate == null) { 180 return endDate; 181 } 182 if (endDate == null) { 183 return beginDate; 184 } 185 if (beginDate.after(endDate)) { 186 return endDate; 187 } 188 return beginDate; 189 } 190 //返回某月該季度的第一個月
191 public static Date getFirstSeasonDate(Date date) { 192 final int[] SEASON = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 }; 193 Calendar cal = Calendar.getInstance(); 194 cal.setTime(date); 195 int sean = SEASON[cal.get(Calendar.MONTH)]; 196 cal.set(Calendar.MONTH, sean * 3 - 3); 197 return cal.getTime(); 198 } 199 //返回某個日期下幾天的日期
200 public static Date getNextDay(Date date, int i) { 201 Calendar cal = new GregorianCalendar(); 202 cal.setTime(date); 203 cal.set(Calendar.DATE, cal.get(Calendar.DATE) + i); 204 return cal.getTime(); 205 } 206 //返回某個日期前幾天的日期
207 public static Date getFrontDay(Date date, int i) { 208 Calendar cal = new GregorianCalendar(); 209 cal.setTime(date); 210 cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i); 211 return cal.getTime(); 212 } 213 //獲取某年某月到某年某月按天的切片日期集合(間隔天數的日期集合)
214 public static List getTimeList(int beginYear, int beginMonth, int endYear, 215 int endMonth, int k) { 216 List list = new ArrayList(); 217 if (beginYear == endYear) { 218 for (int j = beginMonth; j <= endMonth; j++) { 219 list.add(getTimeList(beginYear, j, k)); 220
221 } 222 } else { 223 { 224 for (int j = beginMonth; j < 12; j++) { 225 list.add(getTimeList(beginYear, j, k)); 226 } 227
228 for (int i = beginYear + 1; i < endYear; i++) { 229 for (int j = 0; j < 12; j++) { 230 list.add(getTimeList(i, j, k)); 231 } 232 } 233 for (int j = 0; j <= endMonth; j++) { 234 list.add(getTimeList(endYear, j, k)); 235 } 236 } 237 } 238 return list; 239 } 240 //獲取某年某月按天切片日期集合(某個月間隔多少天的日期集合)
241 public static List getTimeList(int beginYear, int beginMonth, int k) { 242 List list = new ArrayList(); 243 Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1); 244 int max = begincal.getActualMaximum(Calendar.DATE); 245 for (int i = 1; i < max; i = i + k) { 246 list.add(begincal.getTime()); 247 begincal.add(Calendar.DATE, k); 248 } 249 begincal = new GregorianCalendar(beginYear, beginMonth, max); 250 list.add(begincal.getTime()); 251 return list; 252 } 253 }
1 //獲取某年某月的第一天日期 2 public static Date getStartMonthDate(int year, int month) { 3 Calendar calendar = Calendar.getInstance(); 4 calendar.set(year, month - 1, 1); 5 return calendar.getTime(); 6 } 7 8 //獲取某年某月的最後一天日期 9 public static Date getEndMonthDate(int year, int month) { 10 Calendar calendar = Calendar.getInstance(); 11 calendar.set(year, month - 1, 1); 12 int day = calendar.getActualMaximum(5); 13 calendar.set(year, month - 1, day); 14 return calendar.getTime(); 15 }
DateUtils下載java