import java.sql.Date; import java.text.SimpleDateFormat; import java.util.Calendar; public class Util { /** * @function:可以增加日期的天数 * @param date :日期 * @param number :需要增加的天数 * @return */ public static String addDay(String date, int number) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(date)); cd.add(Calendar.DATE, number); return sdf.format(cd.getTime()); } /** * @function:将字符串转为Calendar类型,可以进行日期比较 * @param dateTime 默认:当前系统时间 * @param formatString 默认:yyyy-MM-dd * @return */ public static Calendar formatDateFromStringToCalendar(String dateTime, String formatString) { Calendar cal = Calendar.getInstance(); if (dateTime == null || "".equals(dateTime)) cal.setTime(new Date()); else { if(formatString==null || "".equals(formatString)) formatString = "yyyy-MM-dd"; SimpleDateFormat df = new SimpleDateFormat(formatString); try { cal.setTime(df.parse(dateTime)); } catch (ParseException e) { e.printStackTrace(); } } if(formatString==null) { cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); } return cal; } /** * 日期相减运算 * 方法一 */ public static long getQuot(String time1, String time2) throws ParseException{ long quot = 0; SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd"); Date date1 = ft.parse( time1 ); Date date2 = ft.parse( time2 ); quot = date1.getTime() - date2.getTime(); quot = quot / 1000 / 60 / 60 / 24; return quot; } /** * 日期相减运算 * 方法二 */ public long getDateNumber(String date1,String date2) { int tempStart1 = Integer.parseInt(date1.substring(0,4)); int tempStart2 = Integer.parseInt(date1.substring(4,6)); int tempStart3 = Integer.parseInt(date1.substring(6,8)); int tempEnd1 = Integer.parseInt(date2.substring(0,4)); int tempEnd2 = Integer.parseInt(date2.substring(4,6)); int tempEnd3 = Integer.parseInt(date2.substring(6,8)); Calendar calendar1 = Calendar.getInstance(); Calendar calendar2 = Calendar.getInstance(); calendar1.set(tempStart1, tempStart2, tempStart3);//0到11表示1到12月 calendar2.set(tempEnd1, tempEnd2, tempEnd3); long str=calendar2.getTimeInMillis()-calendar1.getTimeInMillis(); return str/(24*60*60*1000); //返回相差天数 } /** * * @function:日期加减运算 * @param time 日期 * @param format 日期格式 * @param type Calendar.YEAR 日期类型 * @param number 运算数 * @return * @throws BusinessException * @author: mengqingyu 2013-8-16 下午01:55:42 */ public static String getDateNumber(String time, String format, int type, int number) throws BusinessException{ Calendar cd = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(format); try { cd.setTime(sdf.parse(time)); } catch (ParseException e) { throw new BusinessException("日期格式错误:"+time,e); } cd.add(type, -1); return sdf.format(cd.getTime()); } } import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * <p>Title: 周计算类,星期一为一周的开始,星期日为一周的结束</p> * <p>Description: 在两年的交接地带还有疑问。</p> * <p>比如2006-12-29到2009-01-04,属于2008年的最后一周,</p> * <p>2009-01-05位2009年第一周的开始。</p> * <p>db2种的week_iso也是这样计算的</p> * <p>Copyright: Copyright (c) 2006</p> * <p>DateTime: 2006-4-11 23:36:39</p> * * @author gumpgz * @version 1.0 */ public class WeekUtil { /** * 取得当前日期是多少周 * * @param date * @return */ public static int getWeekOfYear(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(7); c.setTime (date); return c.get(Calendar.WEEK_OF_YEAR); } /** * 得到某一年周的总数 * * @param year * @return */ public static int getMaxWeekNumOfYear(int year) { Calendar c = new GregorianCalendar(); c.set(year, Calendar.DECEMBER, 31, 23, 59, 59); return getWeekOfYear(c.getTime()); } /** * 得到某年某周的第一天 * * @param year * @param week * @return */ public static Date getFirstDayOfWeek(int year, int week) { Calendar c = new GregorianCalendar(); c.set(Calendar.YEAR, year); c.set (Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DATE, 1); Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE, week * 7); return getFirstDayOfWeek(cal.getTime ()); } /** * 得到某年某周的最后一天 * * @param year * @param week * @return */ public static Date getLastDayOfWeek(int year, int week) { Calendar c = new GregorianCalendar(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DATE, 1); Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE , week * 7); return getLastDayOfWeek(cal.getTime()); } /** * 取得当前日期所在周的第一天 * * @param date * @return */ public static Date getFirstDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday return c.getTime (); } /** * 取得当前日期所在周的最后一天 * * @param date * @return */ public static Date getLastDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday return c.getTime(); }