- ベストアンサー
Timestamp型への変換について(Java)
- ユーザから入力された8桁の数値をTimestamp型に変換するプログラムを作成
- 現在のプログラムではミリ秒が0で固定されているため、その日の時刻一杯になるような値に変換するには修正が必要
- 修正方法は、入力された数値の末尾に「999」を追加することで実現できる
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
結果が正しく表示されるかもしれないけど。 40点くらいかなぁ。 protected static Timestamp toTimestamp(String ymd) throws ParseException { String old = ymd + "235959999"; Date d = new SimpleDateFormat("yyyyMMddHHmmssSSS").parse(old); return new Timestamp(d.getTime()); } Date#getTime() // return by millisecconds を利用すれば String -> Date -> String -> Timestamp が String -> Date -> Timestamp となる。 さらに Date 化を減らす。 String ymd2 = ymd.replaceAll("([\\d]{4})([\\d]{2})([\\d]{2})", "$1-$2-$3"); String old = ymd2 + " 23:59:59.999"; return Timestamp.valueOf(old); となる。
その他の回答 (1)
お礼
ありがとうございます!下記に修正したら、目的通り実行できました (が、プログラムとして正しいのか分かりません。。。) import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; public class TimeCheck { public static void main(String[] args) { String inputTime = args[0] + "235959999"; DateFormat inDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS"); DateFormat outDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); try { String oldTime = outDateFormat.format(inDateFormat.parse(inputTime)); // Timestamp型に変換 Timestamp newTime = Timestamp.valueOf(oldTime); System.out.print(newTime); } catch (Exception e) { e.printStackTrace(); } } }
お礼
だいぶシンプルになりましたね! ありがとうございます。