用Java解析日期

时间:2012-04-01 07:20:44

标签: java parsing date

大家好!我的“约会”有问题。它需要解析,但我不知道该怎么做。有人可以通过建议修复我的代码来帮助我吗?

    <%
String format = "yyyy-MM-dd";
DateFormat df = new SimpleDateFormat(format); 
String faculty = request.getParameter("faculty");
String absent_date = request.getParameter("absent_date");
int intFaculty = Integer.parseInt(faculty);

System.out.println(faculty);
System.out.println(df.parse(absent_date));

java.sql.Date absentdate  = new java.sql.Date(df.parse(absent_date).getDate());
Absences abs = new Absences();
abs.setFaculty_id(intFaculty);
abs.setAbsent_date(absentdate);
int result = AbsencesImpl.AddAbsences(abs);
if (result == 0)
{
%>
    <jsp:forward page="ListAbsences.jsp">
    <jsp:param name="msg" value="Record Successfully Added"/>
    <jsp:param name="ret" value="meron"/>
    </jsp:forward>
<%
}

%>

对于控制台中的结果和错误:

 5 
 Tue May 01 00:00:00 CST 2012
 java.sql.SQLException: 3 values for 2 columns

我发现了这个,但我不知道如何在我的代码上实现这一点。

 SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");

我正在使用Eclipse Indigo,Sqlite和Apache Tomcat

插入声明(我使用MVC)

public int AddAbsences(Absences abs)
{
    Connection con = null;
    PreparedStatement pstmt;
    ConnDB conn = new ConnDB();
    String sql = "INSERT INTO absences( faculty_id, absent_date) VALUES(?, ?)";

    try{
        con = conn.connect();
        try{
            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, abs.getFaculty_id());
            pstmt.setDate(2, abs.getAbsent_date());

            pstmt.executeUpdate();
        }catch(Exception e){
            System.out.println(e);
        }
        con.close();
    }catch(Exception e){
        System.out.println(e);
    }
    return 0;
}

2 个答案:

答案 0 :(得分:0)

我建议使用

df.parse(absent_date).getTime()

而不是

df.parse(absent_date).getDate()

而且,我怀疑你有3列的表缺席,但你尝试只插入2个值。如果table中的一个值是id,那么我怀疑这个值不是自动生成的。

希望它会对你有所帮助。

答案 1 :(得分:0)

尝试制定一个insert语句,该语句可以从数据库管理控制台(也就是你的数据库)中运行,然后尝试用代码替换代码中的相同内容。在那里你也会得到日期格式。您可以在查询本身中使用一些sql日期函数,这些日期函数将从您的代码可读格式转换日期。

例如:在MsSQL中 - 强制转换('20120312'作为日期时间)会将字符串日期12-03-2012转换为日期时间。

尝试为您的数据库类型搜索sql日期函数。