java 日期计算工具类小结
来源:互联网 发布:软件开发过程不包括 编辑:程序博客网 时间:2024/06/07 21:45
1、本周第一天:
2、本周最后一天:
3、本月第一天:
4、本月最后一天:
6、上月最后一天:
7、计算两个日期之间相差的天数 :
9、本季度第一天:
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();}
2、本周最后一天:
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();}
3、本月第一天:
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();}
4、本月最后一天:
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(); }
6、上月最后一天:
<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();
}
7、计算两个日期之间相差的天数 :
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)); }
9、本季度第一天:
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
0 0
- java 日期计算工具类小结
- java日期计算相关工具类
- java日期计算工具类【包含常用的日期计算方法】
- Java常见日期格式及日期的计算工具类
- java日期工具类
- java日期工具类
- java 日期工具类
- Java日期工具类
- java 日期工具类
- java 日期工具类
- Java日期工具类
- java日期工具类
- Java日期工具类
- JAVA 日期工具类
- java 日期工具类
- Java日期工具类
- java日期工具类
- java日期工具类
- Ford-Fulkerson 最大流算法(标定法)
- matplotlib隐藏坐标轴
- hdu5254水题小暴力
- 从语言进步到编程
- XMPP协议及其扩展详解
- java 日期计算工具类小结
- Linux 内核内存泄露工具使用
- 【HDU】2818-Building Block(并查集)
- 有关按钮的触摸优先级和layer的触摸事件冲突问题
- iOS应用架构谈 网络层设计方案
- IP地址和端口号详细解析
- Longest Common Prefix
- GO语言学习: 项目构建 及编译 初步
- K中心点算法(K-medoids) java实现