场景:
在数据库里面保存一个增加的时间日期的字段(如3个月,6个月,1年);
在数据库里保存了一个时时间日期字段(该字段需要和上面的字段相加)
疑问:
这两个字段我应该在数据库里面怎么保存,以datetime类型保存还是以varchar
类型保存呢;
疑问二:
我该如何让这两这两个字段相同之后得出正确时间日期呢
问题一
int months (月)
datetime needAddTime (时间)
问题二
Date date = needAddTime;//数据库存的时间
Calendar cl = Calendar.getInstance();
cl.setTime(date);
cl.add(Calendar.MONTH, months);//这里就是月份的相加
date = cl.getTime();//获取到相加后的时间
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception {
int renewalsdata = 6;
String validatetime = "20121110";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date now = sdf.parse(validatetime);
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
System.out.println(sdf.format(calendar.getTime()));
calendar.add(Calendar.MONTH, renewalsdata);
System.out.println(sdf.format(calendar.getTime()));
}
}
时间日期的存成datetime,然后增加事件日期的存成int,c#中是用AddMonths方法,java中应该也有类似的方法
第一个字段用int类型,表达N个月。1年就存12在里面。
第二个字段用date(oracle), datetime(mysql),保存日期。不建议用字符串。
从数据库取出后,假设用int a存放第一个字段值,用java.util.Date b存放第二个字段的值。
就可以用下面代码来得到结果:
java.util.Calendar cal = Calendar.getInstance();
cal.setTime(b);
cal.add(Calendar.MONTH,a);
Date result = cl.getTime();