• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Timestamp型への変換について(Java))

Timestamp型への変換について(Java)

このQ&Aのポイント
  • ユーザから入力された8桁の数値をTimestamp型に変換するプログラムを作成
  • 現在のプログラムではミリ秒が0で固定されているため、その日の時刻一杯になるような値に変換するには修正が必要
  • 修正方法は、入力された数値の末尾に「999」を追加することで実現できる

質問者が選んだベストアンサー

  • ベストアンサー
noname#147388
noname#147388
回答No.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); となる。

hakase-chan
質問者

お礼

だいぶシンプルになりましたね! ありがとうございます。

その他の回答 (1)

noname#147388
noname#147388
回答No.1
hakase-chan
質問者

お礼

ありがとうございます!下記に修正したら、目的通り実行できました (が、プログラムとして正しいのか分かりません。。。) 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(); } } }

関連するQ&A

専門家に質問してみよう