数据库中是 2009-09-27 格式的时间数据 我想查询出提前 5 天的数据,也就是 2009-09-22之前的。其中要考虑到情况包括 特殊情况 月初 和 年初 比如 月初是 2009-06-02 提前 5 天 就要是 2009-05-27或28 (每个月的天数可以不考虑) 年初 是 2009-01-02 提前 5 天就是 2008-12-27(没考虑每个月的天数),
当然考虑每个月的天数的更好 。哪位做过啊 谢谢了。
当然考虑每个月的天数的更好 。哪位做过啊 谢谢了。
调试欢乐多
select * from 你的表 where 你的日期<now()-interval 5 day
能被4整除且不能被100整除或能被100整除且能被400整除
,然后在判断他的天数就很好计算了
int m_day = 3600*24*1000;
Date dt = new Date((new Date().getTime()+m_day*day));
System.out.println(dt.toLocaleString());
public static void main(String[] args) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c=Calendar.getInstance();
c.setTime(sdf.parse("2009-09-27"));
c.add(Calendar.DAY_OF_MONTH, -5);
String result = sdf.format(c.getTime());
System.out.println("相加/减后的日期:"+result);
}
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 5);
Calendar的 add有多个类型的参数
cal.add(Calendar.DATE, -5);
Date newDate = cal.getTime();这个方法的参数,你可以查查API
cal.add(Calendar.DATE, -5);
static Date formatDate(Date date) {
if (date == null)
return null;
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
// 获得年月日
int year = calendar.get(Calendar.YEAR);
// 注意月份要加1.
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("input date: " + year + "-" + month + "-" + day);
// 如果天数大于5.直接返回
if (day > 5) {
return new GregorianCalendar(year, month - 1, (day - 5)).getTime();
}
// 如果天数小于5月份大于1.返回上一个月的日期
if (day <= 5 && month > 1) {
return new GregorianCalendar(year, month - 2, (day + 25)).getTime();
}
// 如果天数小于5,月分为1,返回上一年最后一个朋数据
if (day <= 5 && month == 1) {
//System.out.println("-------------"+(year-1)+"-"+month+"-"+(day+25));
return new GregorianCalendar((year - 1), 11, (day + 25)).getTime();
} return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c=Calendar.getInstance();
c.setTime(sdf.parse("2009-09-27"));
c.add(Calendar.DAY_OF_MONTH, -5);
String result = sdf.format(c.getTime());
System.out.println("相加/减后的日期:"+result);
}