您的位置:首页 > 编程语言 > Java开发

java类中日期增加一天或一月的方法

2011-12-23 15:33 330 查看
最近在修改用到Hibernate的项目,遇到一个小问题,由于Hibernate自带的查询方法是将日期以Date格式传递给查询语句的参数

如:

// 日期范围----组合查询语句

if (!dateBegin.equals("") && !dateEnd.equals(""))

{

str += " and s.DLendDate >= :dateBegin and s.DLendDate <= :dateEnd ";

}

// 日期范围----对应参数置入

if (!dateBegin.equals("") && !dateEnd.equals(""))

{

query.setDate("dateBegin", CommonUtil.strToDate(dateBegin));

query.setDate("dateEnd", CommonUtil.strToEndDate(dateBegin));

}

以上关键是在两个字符转换成日期的方法中,如果都调用CommonUtil.strToDate()方法是查询不到结果的

原因如下:

public static Date strToDate(String szDate)

{

try

{

if (isStringDate(szDate))

{

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

Date date = fmt.parse(szDate);

System.out.println(szDate + " ==> " + date); // 2011-12-23 ==> Fri Dec 23 00:00:00 GMT 2011 (打印结果)

return date;

}

}catch (Exception e) {

e.printStackTrace();

}

return null;

}

需要另外写一个结束日期获取的方法(在原有日期上加一天)

public static Date strToEndDate(String szDate)

{

try

{

if (isStringDate(szDate))

{

szDate = addDay(szDate, 1);

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

Date date = fmt.parse(szDate);

System.out.println(szDate + " ==> " + date);// 2011-12-24 ==> Fri Dec 23 00:00:00 GMT 2011 (打印结果)

return date;

}

}catch (Exception e){

e.printStackTrace();

}

return null;

}

//实现日期加一天的方法

public static String addDay(String s, int n) {

try {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cd = Calendar.getInstance();

cd.setTime(sdf.parse(s));

cd.add(Calendar.DATE, n);//增加一天

//cd.add(Calendar.MONTH, n);//增加一个月

return sdf.format(cd.getTime());

} catch (Exception e) {

return null;

}

}

这样就能解决查询无结果的情况,同时我还测试过将日期格式转换成包含时分秒的方法,不过没有成功(不知道为啥)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: