package com.withiter.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class RemindDateUtils { /** * 获取 当前年、半年、季度、月、日、小时 开始结束时间 */ private final SimpleDateFormat shortSdf; private final SimpleDateFormat longHourSdf; private final SimpleDateFormat longSdf; public RemindDateUtils() { this.shortSdf = new SimpleDateFormat("yyyy-MM-dd"); this.longHourSdf = new SimpleDateFormat("yyyy-MM-dd HH"); this.longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } /** * 获得本周的第一天,周一 * * @return */ public Date getCurrentWeekDayStartTime() { Calendar c = Calendar.getInstance(); try { int weekday = c.get(Calendar.DAY_OF_WEEK) - 2; c.add(Calendar.DATE, -weekday); c.setTime(longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00")); } catch (Exception e) { e.printStackTrace(); } return c.getTime(); } /** * 获得本周的最后一天,周日 * * @return */ public Date getCurrentWeekDayEndTime() { Calendar c = Calendar.getInstance(); try { int weekday = c.get(Calendar.DAY_OF_WEEK); c.add(Calendar.DATE, 8 - weekday); c.setTime(longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59")); } catch (Exception e) { e.printStackTrace(); } return c.getTime(); } /** * 获得本天的开始时间,即2012-01-01 00:00:00 * * @return */ public Date getCurrentDayStartTime() { Date now = new Date(); try { now = shortSdf.parse(shortSdf.format(now)); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获得本天的结束时间,即2012-01-01 23:59:59 * * @return */ public Date getCurrentDayEndTime() { Date now = new Date(); try { now = longSdf.parse(shortSdf.format(now) + " 23:59:59"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获得本小时的开始时间,即2012-01-01 23:59:59 * * @return */ public Date getCurrentHourStartTime() { Date now = new Date(); try { now = longHourSdf.parse(longHourSdf.format(now)); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获得本小时的结束时间,即2012-01-01 23:59:59 * * @return */ public Date getCurrentHourEndTime() { Date now = new Date(); try { now = longSdf.parse(longHourSdf.format(now) + ":59:59"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获得本月的开始时间,即2012-01-01 00:00:00 * * @return */ public Date getCurrentMonthStartTime() { Calendar c = Calendar.getInstance(); Date now = null; try { c.set(Calendar.DATE, 1); now = shortSdf.parse(shortSdf.format(c.getTime())); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 当前月的结束时间,即2012-01-31 23:59:59 * * @return */ public Date getCurrentMonthEndTime() { Calendar c = Calendar.getInstance(); Date now = null; try { c.set(Calendar.DATE, 1); c.add(Calendar.MONTH, 1); c.add(Calendar.DATE, -1); now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 当前年的开始时间,即2012-01-01 00:00:00 * * @return */ public Date getCurrentYearStartTime() { Calendar c = Calendar.getInstance(); Date now = null; try { c.set(Calendar.MONTH, 0); c.set(Calendar.DATE, 1); now = shortSdf.parse(shortSdf.format(c.getTime())); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 当前年的结束时间,即2012-12-31 23:59:59 * * @return */ public Date getCurrentYearEndTime() { Calendar c = Calendar.getInstance(); Date now = null; try { c.set(Calendar.MONTH, 11); c.set(Calendar.DATE, 31); now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 当前季度的开始时间,即2012-01-1 00:00:00 * * @return */ public Date getCurrentQuarterStartTime() { Calendar c = Calendar.getInstance(); int currentMonth = c.get(Calendar.MONTH) + 1; Date now = null; try { if (currentMonth >= 1 && currentMonth <= 3) c.set(Calendar.MONTH, 0); else if (currentMonth >= 4 && currentMonth <= 6) c.set(Calendar.MONTH, 3); else if (currentMonth >= 7 && currentMonth <= 9) c.set(Calendar.MONTH, 4); else if (currentMonth >= 10 && currentMonth <= 12) c.set(Calendar.MONTH, 9); c.set(Calendar.DATE, 1); now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 当前季度的结束时间,即2012-03-31 23:59:59 * * @return */ public Date getCurrentQuarterEndTime() { Calendar c = Calendar.getInstance(); int currentMonth = c.get(Calendar.MONTH) + 1; Date now = null; try { if (currentMonth >= 1 && currentMonth <= 3) { c.set(Calendar.MONTH, 2); c.set(Calendar.DATE, 31); } else if (currentMonth >= 4 && currentMonth <= 6) { c.set(Calendar.MONTH, 5); c.set(Calendar.DATE, 30); } else if (currentMonth >= 7 && currentMonth <= 9) { c.set(Calendar.MONTH, 8); c.set(Calendar.DATE, 30); } else if (currentMonth >= 10 && currentMonth <= 12) { c.set(Calendar.MONTH, 11); c.set(Calendar.DATE, 31); } now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获取前/后半年的开始时间 * * @return */ public Date getHalfYearStartTime() { Calendar c = Calendar.getInstance(); int currentMonth = c.get(Calendar.MONTH) + 1; Date now = null; try { if (currentMonth >= 1 && currentMonth <= 6) { c.set(Calendar.MONTH, 0); } else if (currentMonth >= 7 && currentMonth <= 12) { c.set(Calendar.MONTH, 6); } c.set(Calendar.DATE, 1); now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获取前/后半年的结束时间 * * @return */ public Date getHalfYearEndTime() { Calendar c = Calendar.getInstance(); int currentMonth = c.get(Calendar.MONTH) + 1; Date now = null; try { if (currentMonth >= 1 && currentMonth <= 6) { c.set(Calendar.MONTH, 5); c.set(Calendar.DATE, 30); } else if (currentMonth >= 7 && currentMonth <= 12) { c.set(Calendar.MONTH, 11); c.set(Calendar.DATE, 31); } now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获取上个月第一天时间 * * @return */ public Date getLastMonthStartTime() { Calendar c = Calendar.getInstance(); Date date = null; try { c.set(Calendar.DATE, 1); c.add(Calendar.MONTH, -1); date = shortSdf.parse(shortSdf.format(c.getTime())); } catch (Exception e) { e.printStackTrace(); } return date; } /** * 获取上个月最后一天时间 * * @return */ public Date getLastMonthEndTime() { Calendar c = Calendar.getInstance(); Date date = null; try { c.set(Calendar.DATE, 1); c.add(Calendar.DATE, -1); c.set(Calendar.HOUR_OF_DAY, 23); c.set(Calendar.MINUTE, 59); c.set(Calendar.SECOND, 59); date = longSdf.parse(longSdf.format(c.getTime())); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 获取上3个月第一天时间 * * @return */ public Date getLastThreeMonthsStartTime() { Calendar c = Calendar.getInstance(); Date date = null; try { c.set(Calendar.DATE, 1); c.add(Calendar.MONTH, -3); date = shortSdf.parse(shortSdf.format(c.getTime())); } catch (Exception e) { e.printStackTrace(); } return date; } /** * 获得前一天的开始时间,即2012-01-01 00:00:00 * * @return */ public Date getLastDayStartTime() { Calendar c = Calendar.getInstance(); Date now = null; try { c.add(Calendar.DATE, -1); now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获得前一天的结束时间,即2012-01-01 23:59:59 * * @return */ public Date getLastDayEndTime() { Calendar c = Calendar.getInstance(); Date now = null; try { c.add(Calendar.DATE, -1); now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59"); } catch (Exception e) { e.printStackTrace(); } return now; } /** * 获得当天的开始时间,即2012-01-01 00:00:00 * * @return */ public Date getTodayStartTime() { Calendar c = Calendar.getInstance(); Date now = null; try { now = longSdf.parse(shortSdf.format(c.getTime()) + " 03:00:00"); } catch (Exception e) { e.printStackTrace(); } return now; } }