Java日期的转换和运算

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(); 
} 

你可能感兴趣的:(java,C++,c,C#,db2)