日期工具类 - DateUtil.java

日期工具类,提供对日期的格式化和转换方法、获取区间日期、指定日期、每月最后一天等。

 

源码如下:(点击下载 -DateUtil.javacommons-lang-2.6.jar )

  1 import java.text.DateFormat;
  2 import java.text.ParseException;
  3 import java.text.SimpleDateFormat;
  4 import java.util.ArrayList;
  5 import java.util.Calendar;
  6 import java.util.Date;
  7 import java.util.GregorianCalendar;
  8 import java.util.List;
  9 import org.apache.commons.lang.StringUtils;
 10 
 11 /**
 12  * 日期工具类
 13  * 
 14  */
 15 public class DateUtil {
 16 
 17     // 默认日期格式
 18     public static final String DATE_DEFAULT_FORMAT = "yyyy-MM-dd";
 19 
 20     // 默认时间格式
 21     public static final String DATETIME_DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
 22 
 23     public static final String TIME_DEFAULT_FORMAT = "HH:mm:ss";
 24 
 25     // 日期格式化
 26     private static DateFormat dateFormat = null;
 27 
 28     // 时间格式化
 29     private static DateFormat dateTimeFormat = null;
 30 
 31     private static DateFormat timeFormat = null;
 32 
 33     private static Calendar gregorianCalendar = null;
 34 
 35     static {
 36         dateFormat = new SimpleDateFormat(DATE_DEFAULT_FORMAT);
 37         dateTimeFormat = new SimpleDateFormat(DATETIME_DEFAULT_FORMAT);
 38         timeFormat = new SimpleDateFormat(TIME_DEFAULT_FORMAT);
 39         gregorianCalendar = new GregorianCalendar();
 40     }
 41 
 42     /**
 43      * 日期格式化yyyy-MM-dd
 44      * 
 45      * @param date
 46      * @return
 47      */
 48     public static Date formatDate(String date, String format) {
 49         try {
 50             return new SimpleDateFormat(format).parse(date);
 51         } catch (ParseException e) {
 52             e.printStackTrace();
 53         }
 54         return null;
 55     }
 56 
 57     /**
 58      * 日期格式化yyyy-MM-dd
 59      * 
 60      * @param date
 61      * @return
 62      */
 63     public static String getDateFormat(Date date) {
 64         return dateFormat.format(date);
 65     }
 66 
 67     /**
 68      * 日期格式化yyyy-MM-dd HH:mm:ss
 69      * 
 70      * @param date
 71      * @return
 72      */
 73     public static String getDateTimeFormat(Date date) {
 74         return dateTimeFormat.format(date);
 75     }
 76 
 77     /**
 78      * 时间格式化
 79      * 
 80      * @param date
 81      * @return HH:mm:ss
 82      */
 83     public static String getTimeFormat(Date date) {
 84         return timeFormat.format(date);
 85     }
 86 
 87     /**
 88      * 日期格式化
 89      * 
 90      * @param date
 91      * @param 格式类型
 92      * @return
 93      */
 94     public static String getDateFormat(Date date, String formatStr) {
 95         if (StringUtils.isNotBlank(formatStr)) {
 96             return new SimpleDateFormat(formatStr).format(date);
 97         }
 98         return null;
 99     }
100 
101     /**
102      * 日期格式化
103      * 
104      * @param date
105      * @return
106      */
107     public static Date getDateFormat(String date) {
108         try {
109             return dateFormat.parse(date);
110         } catch (ParseException e) {
111             e.printStackTrace();
112         }
113         return null;
114     }
115 
116     /**
117      * 时间格式化
118      * 
119      * @param date
120      * @return
121      */
122     public static Date getDateTimeFormat(String date) {
123         try {
124             return dateTimeFormat.parse(date);
125         } catch (ParseException e) {
126             e.printStackTrace();
127         }
128         return null;
129     }
130 
131     /**
132      * 获取当前日期(yyyy-MM-dd)
133      * 
134      * @param date
135      * @return
136      */
137     public static Date getNowDate() {
138         return DateUtil.getDateFormat(dateFormat.format(new Date()));
139     }
140 
141     /**
142      * 获取当前日期星期一日期
143      * 
144      * @return date
145      */
146     public static Date getFirstDayOfWeek() {
147         gregorianCalendar.setFirstDayOfWeek(Calendar.MONDAY);
148         gregorianCalendar.setTime(new Date());
149         gregorianCalendar.set(Calendar.DAY_OF_WEEK, gregorianCalendar.getFirstDayOfWeek()); // Monday
150         return gregorianCalendar.getTime();
151     }
152 
153     /**
154      * 获取当前日期星期日日期
155      * 
156      * @return date
157      */
158     public static Date getLastDayOfWeek() {
159         gregorianCalendar.setFirstDayOfWeek(Calendar.MONDAY);
160         gregorianCalendar.setTime(new Date());
161         gregorianCalendar.set(Calendar.DAY_OF_WEEK, gregorianCalendar.getFirstDayOfWeek() + 6); // Monday
162         return gregorianCalendar.getTime();
163     }
164 
165     /**
166      * 获取日期星期一日期
167      * 
168      * @param 指定日期
169      * @return date
170      */
171     public static Date getFirstDayOfWeek(Date date) {
172         if (date == null) {
173             return null;
174         }
175         gregorianCalendar.setFirstDayOfWeek(Calendar.MONDAY);
176         gregorianCalendar.setTime(date);
177         gregorianCalendar.set(Calendar.DAY_OF_WEEK, gregorianCalendar.getFirstDayOfWeek()); // Monday
178         return gregorianCalendar.getTime();
179     }
180 
181     /**
182      * 获取日期星期一日期
183      * 
184      * @param 指定日期
185      * @return date
186      */
187     public static Date getLastDayOfWeek(Date date) {
188         if (date == null) {
189             return null;
190         }
191         gregorianCalendar.setFirstDayOfWeek(Calendar.MONDAY);
192         gregorianCalendar.setTime(date);
193         gregorianCalendar.set(Calendar.DAY_OF_WEEK, gregorianCalendar.getFirstDayOfWeek() + 6); // Monday
194         return gregorianCalendar.getTime();
195     }
196 
197     /**
198      * 获取当前月的第一天
199      * 
200      * @return date
201      */
202     public static Date getFirstDayOfMonth() {
203         gregorianCalendar.setTime(new Date());
204         gregorianCalendar.set(Calendar.DAY_OF_MONTH, 1);
205         return gregorianCalendar.getTime();
206     }
207 
208     /**
209      * 获取当前月的最后一天
210      * 
211      * @return
212      */
213     public static Date getLastDayOfMonth() {
214         gregorianCalendar.setTime(new Date());
215         gregorianCalendar.set(Calendar.DAY_OF_MONTH, 1);
216         gregorianCalendar.add(Calendar.MONTH, 1);
217         gregorianCalendar.add(Calendar.DAY_OF_MONTH, -1);
218         return gregorianCalendar.getTime();
219     }
220 
221     /**
222      * 获取指定月的第一天
223      * 
224      * @param date
225      * @return
226      */
227     public static Date getFirstDayOfMonth(Date date) {
228         gregorianCalendar.setTime(date);
229         gregorianCalendar.set(Calendar.DAY_OF_MONTH, 1);
230         return gregorianCalendar.getTime();
231     }
232 
233     /**
234      * 获取指定月的最后一天
235      * 
236      * @param date
237      * @return
238      */
239     public static Date getLastDayOfMonth(Date date) {
240         gregorianCalendar.setTime(date);
241         gregorianCalendar.set(Calendar.DAY_OF_MONTH, 1);
242         gregorianCalendar.add(Calendar.MONTH, 1);
243         gregorianCalendar.add(Calendar.DAY_OF_MONTH, -1);
244         return gregorianCalendar.getTime();
245     }
246 
247     /**
248      * 获取日期前一天
249      * 
250      * @param date
251      * @return
252      */
253     public static Date getDayBefore(Date date) {
254         gregorianCalendar.setTime(date);
255         int day = gregorianCalendar.get(Calendar.DATE);
256         gregorianCalendar.set(Calendar.DATE, day - 1);
257         return gregorianCalendar.getTime();
258     }
259 
260     /**
261      * 获取日期后一天
262      * 
263      * @param date
264      * @return
265      */
266     public static Date getDayAfter(Date date) {
267         gregorianCalendar.setTime(date);
268         int day = gregorianCalendar.get(Calendar.DATE);
269         gregorianCalendar.set(Calendar.DATE, day + 1);
270         return gregorianCalendar.getTime();
271     }
272 
273     /**
274      * 获取当前年
275      * 
276      * @return
277      */
278     public static int getNowYear() {
279         Calendar d = Calendar.getInstance();
280         return d.get(Calendar.YEAR);
281     }
282 
283     /**
284      * 获取当前月份
285      * 
286      * @return
287      */
288     public static int getNowMonth() {
289         Calendar d = Calendar.getInstance();
290         return d.get(Calendar.MONTH) + 1;
291     }
292 
293     /**
294      * 获取当月天数
295      * 
296      * @return
297      */
298     public static int getNowMonthDay() {
299         Calendar d = Calendar.getInstance();
300         return d.getActualMaximum(Calendar.DATE);
301     }
302 
303     /**
304      * 获取时间段的每一天
305      * 
306      * @param 开始日期
307      * @param 结算日期
308      * @return 日期列表
309      */
310     public static List<Date> getEveryDay(Date startDate, Date endDate) {
311         if (startDate == null || endDate == null) {
312             return null;
313         }
314         // 格式化日期(yy-MM-dd)
315         startDate = DateUtil.getDateFormat(DateUtil.getDateFormat(startDate));
316         endDate = DateUtil.getDateFormat(DateUtil.getDateFormat(endDate));
317         List<Date> dates = new ArrayList<Date>();
318         gregorianCalendar.setTime(startDate);
319         dates.add(gregorianCalendar.getTime());
320         while (gregorianCalendar.getTime().compareTo(endDate) < 0) {
321             // 加1天
322             gregorianCalendar.add(Calendar.DAY_OF_MONTH, 1);
323             dates.add(gregorianCalendar.getTime());
324         }
325         return dates;
326     }
327 
328     /**
329      * 获取提前多少个月
330      * 
331      * @param monty
332      * @return
333      */
334     public static Date getFirstMonth(int monty) {
335         Calendar c = Calendar.getInstance();
336         c.add(Calendar.MONTH, -monty);
337         return c.getTime();
338     }
339 }

 

你可能感兴趣的:(日期工具类 - DateUtil.java)