gpt4 book ai didi

java - Java程序中的解析错误

转载 作者:行者123 更新时间:2023-11-29 06:19:32 25 4
gpt4 key购买 nike

错误发生在 proj_close_date 的解析附近。( java.text.ParseException: Unparseable date: "09/09/2010")我正在从字符串格式的数据库中读取 project_close_date 值。我想将其转换为日期格式以发现 proj_close_date 存在于 from_date 和 to_date 之间

public ArrayList viewAllCustProj1(String frm_date,String to_date,String cust,String proj)
{
ArrayList list= new ArrayList();
try
{
String strCust="";
String strproj="";

if(!cust.equalsIgnoreCase("ALL") && !cust.equals(null))
{
strCust="and customer_code='"+cust+"'";
}
if(!proj.equalsIgnoreCase("ALL") && !proj.equals(null))
{
strproj="and project_code='"+proj+"'";
}
if(cust.equalsIgnoreCase("ALL") && !proj.equalsIgnoreCase("ALL"))
{

}
else
{
stmt=conn.prepareStatement("select customer_code from mst_customer where visible=1 "+strCust+" and category='EU' and multiple_project=0");
rs=stmt.executeQuery();
while(rs.next())
{
reportBean bean=new reportBean();
bean.setCust_code(rs.getString("customer_code"));
bean.setProject_code("");
list.add(bean);
}
rs.close();
stmt.close();
}


System.out.println(" select customer_code,project_code,proj_close_date,added_on from mst_project where visible=1 "+strCust+" "+strproj+"");
stmt=conn.prepareStatement("select customer_code,project_code,proj_close_date,added_on from mst_project where visible=1 "+strCust+" "+strproj+"");
rs=stmt.executeQuery();
while(rs.next())
{
reportBean bean=new reportBean();

String proj_close_date=rs.getString(3);
String added_on=rs.getString(4);

DateFormat myDateFormat = new SimpleDateFormat("MM-dd-yyyy");

DateFormat myDateFormat1= new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");

Date myDate1 = null;
Date myDate2 = null;
Date myDate3 = null;
Date myDate4 = null;
Date myDate5 = null;
try
{
if(proj_close_date==null || proj_close_date.trim().equals("") || proj_close_date=="NULL")
{
System.out.println("\n ****** In IF Loop ");
bean.setCust_code(rs.getString("customer_code"));
bean.setProject_code(rs.getString("project_code"));
list.add(bean);
}
else
{
System.out.println("\n ****** In Else Loop ");
myDate1 = myDateFormat.parse(proj_close_date);
myDate2 = myDateFormat.parse(frm_date);
myDate3 = myDateFormat.parse(to_date);
myDate5 = myDateFormat1.parse(added_on);

//myDate4 = myDateFormat.format(myDate5);

System.out.println("Project Code ---->"+rs.getString(2));
System.out.println("Proj_close_date ------>"+myDate1);
System.out.println("From Date ---->"+myDate2);
System.out.println("to Date ---->"+myDate3);
//System.out.println("Added_on --->"+myDate4);
System.out.println("Added_on 1 ie Date 5 ---->"+myDate5);

if(myDate1.after(myDate2) && myDate1.before(myDate3)) // means --> if(proj_close_date.after(frm_date) && proj_close_date.before(to_date))
{
if(myDate1.after(myDate4)) // means --> if(proj_close_date.after(added_on))
{
bean.setCust_code(rs.getString("customer_code"));
bean.setProject_code(rs.getString("project_code"));
list.add(bean);
}
else
{
bean.setCust_code(rs.getString("customer_code"));
bean.setProject_code(rs.getString("project_code"));
list.add(bean);
}
}//if
}//else

}//try
catch (ParseException e)
{
System.out.println("Invalid Date Parser Exception ");
e.printStackTrace();
}


}
rs.close();
stmt.close();

}
catch(SQLException sex)
{
sex.printStackTrace();
}
finally
{
closeConnection();
}
return list;
}

最佳答案

改变这一行

DateFormat myDateFormat = new SimpleDateFormat("MM-dd-yyyy");

为此:

DateFormat myDateFormat = new SimpleDateFormat("MM/dd/yyyy");

但是,您不清楚为什么将所有值都作为字符串获取,也许您应该考虑使用专用的 ResultSet 方法,例如 getDategetTimeStamp .

另一方面,我想提一下,应该避免通过连接构建 SQL 查询——您应该使用 ? 占位符生成查询,然后在您的 PreparedStatement 上设置参数

关于java - Java程序中的解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3723710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com