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

 

最近在修改用到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;   
             }    
     }  

这样就能解决查询无结果的情况,同时我还测试过将日期格式转换成包含时分秒的方法,不过没有成功(不知道为啥)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值