如何计算制造日期和月份之前最好的到期日期在数据库中给出

问题描述:

我有一个数据库,它保存制造日期的值,最好在月份之前以'YYYY-MM-DD'格式给出日期。 例如制造日期是2014-01-09,最好在前一个月给出的是12个月,或者可以是数据库中给出的11个月。每当我试图从检索数据库日期它给例外DATE“12”列2如何计算制造日期和月份之前最好的到期日期在数据库中给出

我试过是

public void calculateExpiryDate(List<Item> items) { 
    // TODO Auto-generated method stub 

    List<Item> ItemList1 = new ArrayList<Item>(); 
    String query = "select mfg_date,UseBeforeInMonths from cheese_tbl"; 
    PreparedStatement prepStmt = null; 
    try { 
     prepStmt = con.prepareStatement(query); 
    } catch (SQLException e2) { 
     // TODO Auto-generated catch block 
     e2.printStackTrace(); 
    } 
    ResultSet rs = null; 
    try { 
     rs = prepStmt.executeQuery(); 
    } catch (SQLException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

     try { 
     while (rs.next()) { 
      Item i1=new Item(); 
      java.sql.Date dbSqlDate = rs.getDate(2); 
      i1.setManufacturingDate(rs.getDate("mfg_date")); 
      i1.setManufacturingDate(rs.getDate("UseBeforeInMonths")); 


      ItemList.add(i1); 
     } 
    System.out.println(ItemList1); 
     } 
     catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 




} 

的格式错误但是这给了我错误格式日期

灿任何人都可以帮助我计算产品的有效期限。 谢谢。

+1

数字'12'如何可以格式为'YYYY-MM-DD'?或者最好是一个月,或者是格式为“YYYY-MM-DD”的字符串。 – Paolo

+0

@Paolo对不起..日期格式为'YYYY-MM-DD' – sss

如果我理解正确,您希望以YYY-MM-DD格式给出生产日期,并在几个月内存储到“最佳日期前”的时间。

我会将该持续时间存储在一个整数中,并使用Jodatime api(http://www.joda.org/joda-time/或者如果您使用Java SE8 http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html)来计算最佳之前的日期。

这种工作方式如下:

LocalDateTime manufacturingDate = new LocalDateTime(rs.getDate("mfg_date")); 
LocalDateTime bestBefore = manufacturingDate.plusMonths(rs.getInt("UseBeforeInMonths")); 

希望这有助于。

+0

非常感谢你 – sss