java 日期时间 ,实现sybase dateadd函数

来源:互联网 发布:学算法入门看什么书 编辑:程序博客网 时间:2024/05/16 05:45
/**
* sybase 函数说明
* dateadd(datepart,number,date_expr)
返回日期,通过在date_expr上增加指定number的日期部件而产生的
* datepart
日期部件   缩写   值范围
年 yy   1753-9999
季度 qq   1-4
月 mm   1-12
每年中的天   dy   1-366
天 dd   1-31
星期 wk   1-54
星期天 dw   1-7(1=sunday)
小时 hh   0-23
分钟 mi   0-59
秒 ss   0-59
毫秒 ms   0-999

*/



public class DataAdd {
/**
* sysbase 函数说明
* dateadd(datepart,number,date_expr)
返回日期,通过在date_expr上增加指定number的日期部件而产生的
* datepart
日期部件   缩写   值范围
年 yy   1753-9999
季度 qq   1-4
月 mm   1-12
每年中的天   dy   1-366
天 dd   1-31
星期 wk   1-54
星期天 dw   1-7(1=sunday)
小时 hh   0-23
分钟 mi   0-59
秒 ss   0-59
毫秒 ms   0-999
*/

private static String dataFormat = "yyyyMMdd hh:mm:ss:SSS";
private static SimpleDateFormat sf = new SimpleDateFormat(dataFormat);

public String getDataFormat() {
return dataFormat;
}
public void setDataFormat(String dataFormat) {
this.dataFormat = dataFormat;
}
public DataAdd(){

}
// 日期部件,增加数,日期
public static Date dataadd(String datapart,int num,Date inDate){
Calendar calendar = Calendar.getInstance();
calendar.setTime(inDate);
Calendar c = Calendar.getInstance();
System.out.println("date---"+sf.format(inDate));
int year = c.get(calendar.YEAR);
System.out.println("year--"+year);

int month = c.get(calendar.MONTH)+1;
System.out.println("month--"+month);

int dy = c.get(calendar.DAY_OF_YEAR);
System.out.println("dy--"+dy);

int qq = month/3+1;
System.out.println("qq--"+qq);

int dd = c.get(calendar.DATE);
System.out.println("dd--"+dd);

int wk = c.get(calendar.WEEK_OF_YEAR);
System.out.println("wk--"+wk);

int dw = c.get(calendar.DAY_OF_WEEK);
System.out.println("dw--"+dw);

int hourOfDay = c.get(calendar.HOUR_OF_DAY);
System.out.println("hourOfDay--"+hourOfDay);

int minute = c.get(calendar.MINUTE);
System.out.println("minute--"+minute);

int second = c.get(calendar.SECOND);
System.out.println("second--"+second);

int millisecond = c.get(calendar.MILLISECOND);
System.out.println("millisecond--"+millisecond);


if(datapart.equalsIgnoreCase("yy")){
c.add(Calendar.YEAR, num);
}
else if(datapart.equalsIgnoreCase("qq")){
 c.add(Calendar.MONTH, num*3);
}
else if(datapart.equalsIgnoreCase("mm")){
 c.add(Calendar.MONTH, num);
}
else if(datapart.equalsIgnoreCase("dy")){
c.add(Calendar.DAY_OF_YEAR, num);

}
else if(datapart.equalsIgnoreCase("dd")){
c.add(Calendar.DATE, num);
}
else if(datapart.equalsIgnoreCase("wk")){
c.add(Calendar.WEEK_OF_YEAR, num);
}
else if(datapart.equalsIgnoreCase("dw")){
c.add(Calendar.DAY_OF_WEEK, num);
}
else if(datapart.equalsIgnoreCase("hh")){
c.add(Calendar.HOUR_OF_DAY, num);
}
else if(datapart.equalsIgnoreCase("mi")){
c.add(Calendar.MINUTE, num);
}
if(datapart.equalsIgnoreCase("ss")){
c.add(Calendar.SECOND, num);
}
if(datapart.equalsIgnoreCase("ms")){
c.add(Calendar.MILLISECOND, num);
}
System.out.println("new --date---"+sf.format(c.getTime()));
return c.getTime();
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(DataAdd.dataadd("qq", -1, new Date()));
}