public static Date getStartTime4Week() throws Exception{ //SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 2; cal.add(Calendar.DATE, -day_of_week); /*String startTT = df.format(cal.getTime()); System.out.println("本周第一天: " + startTT);*/ return cal.getTime(); }
public static Date getEndTime4Week() throws Exception{ //SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 2; cal.add(Calendar.DATE, -day_of_week); cal.add(Calendar.DATE, 6); /*String startTT = df.format(cal.getTime()); System.out.println("本周第一天: " + startTT);*/ return cal.getTime(); }
public static Date getStartTime4Month() throws Exception{ //SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 //String first = df.format(c.getTime()); //System.out.println("===============first:"+first); return c.getTime(); }
public static Date getEndTime4Month() throws Exception{ //SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Calendar ca = Calendar.getInstance(); ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); //String last = df.format(ca.getTime()); //System.out.println("===============last:"+last); /*String startTT = df.format(cal.getTime()); System.out.println("本周第一天: " + startTT);*/ return ca.getTime(); }
5、上月第一天:
<pre name="code" class="java">public static Date getStartTime4PreMonth() throws Exception{
<pre name="code" class="java"> Calendar cal_1=Calendar.getInstance();//获取当前日期 cal_1.add(Calendar.MONTH, -1); cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 firstDay = format.format(cal_1.getTime()); System.out.println("-----1------firstDay:"+firstDay);return cal_1.getTime(); }
<pre name="code" class="java"><pre name="code" class="java">public static Date getStartTime4PreMonth() throws Exception{<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<pre name="code" class="java"><pre name="code" class="java"> Calendar cale = Calendar.getInstance(); cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天 lastDay = format.format(cale.getTime()); System.out.println("-----2------lastDay:"+lastDay);return cale.getTime();
}
public static int daysBetween(Date smdate,Date bdate) throws ParseException{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); smdate=sdf.parse(sdf.format(smdate)); bdate=sdf.parse(sdf.format(bdate)); Calendar cal = Calendar.getInstance(); cal.setTime(smdate); long time1 = cal.getTimeInMillis(); cal.setTime(bdate); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); }
8、字符串的日期格式的计算:
public static int daysBetween(String smdate,String bdate) throws ParseException{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.setTime(sdf.parse(smdate)); long time1 = cal.getTimeInMillis(); cal.setTime(sdf.parse(bdate)); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); }
public static Date getStartTime4Quart() throws Exception{ SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); int currentMonth = c.get(Calendar.MONTH) + 1; 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); System.out.println(df.format(c.getTime())); } catch (Exception e) { e.printStackTrace(); } return c.getTime(); }10、本季度最后一天:
public static Date getEndTime4Quart() throws Exception{ SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); int currentMonth = c.get(Calendar.MONTH) + 1; 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); } System.out.println(df.format(c.getTime())); } catch (Exception e) { e.printStackTrace(); } return c.getTime(); }
11、本年第一天:
public static Date getStartTime4Year() throws Exception{ SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); try { c.set(Calendar.MONTH, 0); c.set(Calendar.DATE, 1); System.out.println(df.format(c.getTime())); } catch (Exception e) { e.printStackTrace(); } return c.getTime(); }
12、本年最后一天:
public static Date getEndTime4Year() throws Exception{ SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); try { c.set(Calendar.MONTH, 11); c.set(Calendar.DATE, 31); System.out.println(df.format(c.getTime())); } catch (Exception e) { e.printStackTrace(); } return c.getTime(); }
13、求两个日期之间的每一天
/** * 获得日期字符串数组 * @param calendarType 日期跨度的类型, * */ public static Date[] getDateArrays(Date start,Date end ,int calendarType){ ArrayList<Date> ret = new ArrayList<Date>(); Calendar calendar = Calendar.getInstance(); calendar.setTime(start); Date tmpDate = calendar.getTime(); long endTime = end.getTime(); while(tmpDate.before(end)||tmpDate.getTime() == endTime){ ret.add(calendar.getTime()); calendar.add(calendarType, 1); tmpDate = calendar.getTime(); } Date[] dates = new Date[ret.size()]; return ret.toArray(dates); } @Test public void getDateArrays2(){ Date date = DateUtils.getDate("2008-04-01"); Date date2 = DateUtils.getDate("2008-08-01"); Date[] strArray = DateUtils.getDateArrays(date, date2, Calendar.DAY_OF_YEAR); for (Date string : strArray) { System.out.println(DateUtils.getDayStr(string)); } }
注:SimpleDateFormat是线程不安全的,放到类变量中需要注意。
参考文章:http://www.cnblogs.com/GYoungBean/archive/2012/10/31/2748219.html