频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
java类中日期增加一天或一月的方法
2012-01-04 13:58:20           
收藏   我要投稿

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

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

摘自 xuliangwen的专栏

点击复制链接 与好友分享!回本站首页
相关TAG标签 加一 日期 方法
上一篇:oracle数据库中关于利用查询直接排名的方法
下一篇:用JAVA代码来导出EXCEL
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站