[問題] 關於date的問題

看板java作者 (司馬 青)時間13年前 (2012/09/11 15:37), 編輯推噓4(403)
留言7則, 4人參與, 最新討論串1/1
各位大大好,小弟又有問題來請教大家了 小弟目前在學jsp跟servlet,目前嘗試著要寫註冊系統 但是卻卡在一個關於date的問題,希望各位大大能為我解惑 小弟有把類別裡的程式貼到main裡跑,執行結果也如我所預期的一樣 但是套到類別,要寫入資料庫時,卻會發生錯誤訊息 而且我取的是轉為date之前的"字串",並非取date 卻給我這個錯誤,讓我頭痛了兩天 -.- 錯誤訊息為 java.lang.IllegalArgumentException: Cannot format given Object as a Date 以下為jsp片段程式 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <jsp:useBean id="member" class="com.kamikaze.Member" scope="session"/> <form action="regist"> <label> 任用日期: <input type="text" name="user_employee" id="" /> </label> 以下為Servlet片段程式 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String user_employee = request.getParameter("user_employee"); Member member = new Member(user_employee); if(member.check()){ <---eclipse指出這有錯 response.sendRedirect("regist.jsp"); }else{ HttpSession session = request.getSession(); session.setAttribute("member", member); response.sendRedirect("regist.jsp"); } } 以下為Member類別片段程式 public class Member { String user_employee; } public Member() { } public Member(String user_employee){ this.user_employee = user_employee; } public boolean check() { try { Date date = new Date(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date sysdate = df.parse(df.format(date)); Date inpdate = df.parse(df.format(user_employee)); <--eclipse指 出這句有錯 if (!user_employee.matches("'#^((19|20)?[0-9]{2} [- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))*$#'")) { errors.add("日期格式需為西元 年、月、日"); passed = false; } if (inpdate.before(sysdate)) { System.out.println("日期不能在今天之前"); passed = false; } } catch (ParseException e) { e.printStackTrace(); } public String getuser_employee() { return user_employee; } public void setuser_employee(String user_employee) { this.user_employee = user_employee; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.108.111 ※ 編輯: vicioutangel 來自: 180.176.108.111 (09/11 16:39)

09/11 18:08, , 1F
user_employee 必需是 Date,而不是字串
09/11 18:08, 1F

09/11 19:14, , 2F
請教大大,為什麼我拉出這片段獨立執行時,使用字串
09/11 19:14, 2F

09/11 19:18, , 3F
套入該屬性卻可以執行?
09/11 19:18, 3F

09/11 22:56, , 4F
df.format(user_employee) 改成 user_employee
09/11 22:56, 4F

09/12 09:29, , 5F
沒實際跑過,不知道原因。我是看api上寫 .format()只收Date
09/12 09:29, 5F

09/12 11:41, , 6F
感謝您的解答,雖然我還沒試成功 -.-
09/12 11:41, 6F

09/13 10:28, , 7F
parse是拿來將String轉Date;而format是Date轉String..
09/13 10:28, 7F
文章代碼(AID): #1GJkelVo (java)