Java 如何将字符串转换为yyyy-MM-dd格式的日期并存储在数据库中

Java 如何将字符串转换为yyyy-MM-dd格式的日期并存储在数据库中,java,core,Java,Core,这是我所做的代码,但是日期没有以与数据库中的制造日期相同的格式存储(yyyy-MM-dd) 这将计算项目的到期日期: public void calculateExpiryDate(List<Item> items)//to calculate expiry date { System.out.println("Calculate expiry"); try {// to get the data one by one and calc

这是我所做的代码,但是日期没有以与数据库中的制造日期相同的格式存储(yyyy-MM-dd)

这将计算项目的到期日期:

   public   void calculateExpiryDate(List<Item> items)//to calculate expiry date
   {
     System.out.println("Calculate expiry");

     try
     {// to get the data one by one and calculate its expiry date
       for(Item ob : items)
       {
       Item i1 = (Item)ob;
       Date dd = (Date)i1.getManufacturingDate();
       int  m = i1.getUseBeforeMonths();
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       String date = sdf.format(dd);
       String d[] = date.split("-");
       d[1]=String.valueOf(Integer.parseInt(d[1])+m);
       // loop to calculate expiry date
       while(Integer.parseInt(d[1])>12)
       {
            d[1] = String.valueOf(Integer.parseInt(d[1])-12);
            d[0] = String.valueOf(Integer.parseInt(d[0])+1);
       }
       String d1 =d[0]+"-"+d[1]+"-"+d[2];


       Date dt = (Date)sdf.parse(d1);//converting string into date
       i1.setExpiryDate(dt);//setting the expiry date into the database
       System.out.println(i1.getExpiryDate());
       }
     }
     catch(Exception e)
     {
          e.printStackTrace();
     }



   }
public void calculateExpiryDate(列表项)//计算到期日
{
System.out.println(“计算到期日”);
尝试
{//逐个获取数据并计算其到期日期
对于(项目ob:项目)
{
第i1项=(项目)ob;
日期dd=(日期)i1.getManufacturingDate();
int m=i1.getUseBefforeMonths();
SimpleDataFormat sdf=新SimpleDataFormat(“yyyy-MM-dd”);
字符串日期=sdf.format(dd);
字符串d[]=date.split(“-”);
d[1]=String.valueOf(Integer.parseInt(d[1])+m);
//循环以计算到期日期
while(Integer.parseInt(d[1])>12)
{
d[1]=String.valueOf(Integer.parseInt(d[1])-12);
d[0]=String.valueOf(Integer.parseInt(d[0])+1);
}
字符串d1=d[0]+“-”+d[1]+“-”+d[2];
Date dt=(Date)sdf.parse(d1);//将字符串转换为日期
i1.setExpiryDate(dt);//将到期日期设置到数据库中
System.out.println(i1.getExpiryDate());
}
}
捕获(例外e)
{
e、 printStackTrace();
}
}

A
日期
没有格式,因为它是自1970年以来测量的时间。如果我们谈论的是格式,那么我们谈论的是如何显示日期,这是一个不同的问题。当然,您需要将
“yyyy-mm-dd”
的格式更改为
“yyy-mm-dd”
,但同样:2015年7月1日与2015-07-01的日期相同。不同之处在于它的显示方式。不用说,代码的很大一部分是不需要的。您只需根据字符串创建一个日期,执行任何需要执行的操作,然后以首选格式显示日期。

您执行的强制转换是冗余的。
date
没有格式。。。但目前您正在使用错误的模式进行格式化和解析<代码>m表示分钟<代码>M表示月份。。。现在还不清楚您想在这里做什么,但我强烈建议不要为了执行日历计算而进行所有这些字符串解析和格式化。如果您使用的是Java8,请使用Java.time。如果您使用的是Java7,请使用Joda Time。如果你必须使用日期和日历,至少要使用这些类型来进行算术运算,而不是所有这些文本操作。你能解释一下,在给定初始日期的情况下,你是如何尝试获取到期日的逻辑吗?是否为初始日期后的x天数?数据库中提供了制造日期和使用前的月数。因此,要计算每个项目的有效期。所以我提取了生产日期和使用前的月份。我将日期转换为字符串,然后将其拆分,然后将月份与使用前的月份相加,如果该值大于12,则从月份中减去12,然后将年份增加1。我得到了正确的到期日期,但问题是我必须以与制造日期(yyyy-MM-dd)相同的格式将到期日期存储在数据库中,但我无法实际使用给定的制造日期和使用前的月份计算物品的到期日期。因此,我计算了失效日期,我必须以与制造日期(yyyy-mm-dd)相同的格式存储失效日期。那么如何做到这一点呢???@Neha,你的方法并非没有优点,但将日期转换为字符串、数字、字符串和日期是毫无意义的。您可以想象,经过如此多的转换,您的函数将无法很好地执行,特别是如果此函数是复杂算法的频繁操作。您可以使用日历来帮助您,如本例中所示:注意,您需要使用日期而不是当前日期。