現在、プログラミング初心者でWebアプリケーションを作っているのですが、
時間の取得でつまづいてしまったので、
質問をさせて頂きます。
行いたいことは、
ある2つの値から
データベース上でそれらの値による検索を行い、
特定のタイムスタンプを取得してくるというものです。
更に、その時間に72時間追加して、
その追加した時間と今の時間を比較します。
その時間が0以下になった時に
テーブルの該当する行を削除します。
説明が下手ですみません。
実際に書いているコードがこちらです。
まだまだ、完成には至っていないので、
考え方等を含めご教授願います。
下記がサーブレットです。
lang
1 protected void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 //エンコード設定 4 request.setCharacterEncoding("utf8"); 5 //sessionスコープの準備 6 HttpSession ses = request.getSession(true); 7 OfferDao dao = new OfferDao(); 8 try{ 9 dao.connect(); 10 //OfferBeans beans = new OfferBeans(); 11 //test用にgetParameter 12 //仮に設定した値の2つです。 13 String myPairID = String.valueOf(request.getParameter("mypairid")); 14 String yourPairID = "5000000060000000"; 15 ses.setAttribute("mypairid", myPairID); 16 ses.setAttribute("yourpairid", yourPairID); 17 String mypairid = (String)ses.getAttribute("mypairid"); 18 String yourpairid = (String)ses.getAttribute("yourpairid"); 19 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 20 Date date = sdf.parse(dao.selectTime(mypairid, yourpairid).toString()); 21 long baseTime = date.getTime() + 259200000; 22 Timestamp timeStamp = new Timestamp(System.currentTimeMillis()); 23 long timeNow = timeStamp.getDateTime(); 24 long timeMilliSec = (baseTime - timeNow); 25 long hour = timeMilliSec / 3600000; 26 long min = (timeMilliSec / 60000) % 60; 27 long sec = (timeMilliSec / 1000) % 60; 28 String remainingTime = hour + "時間" + min + "分" + sec + "秒"; 29 request.setAttribute("NowTime", remainingTime); 30 }catch(Exception e){ 31 e.printStackTrace(); 32 throw new ServletException(); 33 }
上記のサーブレット内でのDaoのselectTime()の記載のあるDaoがこちらです。
lang
1/**更新時間の為のタイムスタンプのセレクト*/ 2 public OfferBeans selectTime(String myPairID , String yourPairID)throws Exception{ 3//取得した2つの値に該当する行のdatetime型のtimeを照会します。 4 String sql = "SELECT time FROM offer " 5 + "WHERE (offer_sendID = ? AND offer_recID = ?)OR (offer_sendID = ? AND offer_recID = ?)"; 6 PreparedStatement ps = connect.prepareStatement(sql); 7 ps.setString(1, myPairID); 8 ps.setString(2, yourPairID); 9 ps.setString(3, yourPairID); 10 ps.setString(4, myPairID); 11 ResultSet rs = ps.executeQuery(); 12 OfferBeans beans = new OfferBeans(); 13 rs.next(); 14 return beans; 15 }
上記の状態で実行したときのエラーがこちらです。
lang
1java.text.ParseException: Unparseable date: "beans.OfferBeans@49ae1e38"
単純にbeansで取得したデータをSimpleDateFormataの型に入れられていないのでしょうか?
色々調べたりしているのですが、
いまいち本質が掴めません。
何卒、ご教授の程よろしく御願い致します。
↓ここからが変更後のサーブレットです。
lang
1dao.connect(); 2 //test用にgetParameter 3 String myPairID = String.valueOf(request.getParameter("mypairid")); 4 String yourPairID = "3000000040000000"; 5 ses.setAttribute("mypairid", myPairID); 6 ses.setAttribute("yourpairid", yourPairID); 7 String mypairid = (String)ses.getAttribute("mypairid"); 8 String yourpairid = (String)ses.getAttribute("yourpairid"); 9 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 10 Date date = sdf.parse(dao.selectTime(mypairid, yourpairid).getTime().toString()); 11 long baseTime = date.getTime() + 259200000; 12 Timestamp timeStamp = new Timestamp(System.currentTimeMillis()); 13 long timeNow = timeStamp.getDateTime(); 14 long timeMilliSec = (baseTime - timeNow); 15 long hour = timeMilliSec / 3600000; 16 long min = (timeMilliSec / 60000) % 60; 17 long sec = (timeMilliSec / 1000) % 60; 18 String remainingTime = hour + "時間" + min + "分" + sec + "秒"; 19 request.setAttribute("NowTime", remainingTime);
何卒よろしく御願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/18 05:52
2015/05/18 05:58
2015/05/18 05:59
2015/05/18 08:53
2015/05/18 10:31
2015/05/18 13:16
2015/05/18 13:47
2015/05/18 14:00