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

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

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

ユーザから入力された8桁の数値をTimestamp型に変換する、下記のプログラムを作成したのですが、 例えば、"20111031"を入力して実行した時に、 最終的に出力されるデータは"2011-10-31 23:59:59.0"となります。(ミリ秒部分が"0") これを、 "2011-10-31 23:59:59.9"(ミリ秒部分が"9"など)のように、 その日の時刻一杯になるような値に変換するには、 プログラムをどのように修正すれば良いでしょうか? 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] + "235959"; DateFormat inDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); DateFormat outDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { String oldTime = outDateFormat.format(inDateFormat.parse(inputTime)); // Timestamp型に変換 Timestamp newTime = Timestamp.valueOf(oldTime); System.out.print(newTime); } catch (Exception e) { e.printStackTrace(); } } }

  • Java
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
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

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

    Java実行時の引数(args[i])の値を、 Timestamp型に変換してSQLにセットしたいのですが、 Timestamp型への変換がうまくいかず、 例外として ===== java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] ===== と表示されます。 ちなみに入力値は、 YYYYMMDDhhmmssの形式で、下記のように入力しています。 ===== 20110810000000 ===== APIなどを読んでvalueOfメソッドなど使ってみたのですが。。。 分かる方教えてください!

    • ベストアンサー
    • Java
  • java String型から日付型へ変換

    こんにちは 現在javaのPGで日付チェックを行いたくプログラムを組んでいるのですが、色々なサイトを見ながら以下のようなものを書きました。 しかし、動かすと必ず例外にcatchされていまいます。 なぜ例外処理をされてしまうのか、原因がわかりません。 何がいけないのでしょうか?? ご教授お願いいたします。 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; //strbeginDate, strcloseDateはフォームよりString型で受け取ります。 String strbeginDate, strcloseDate; SimpleDateFormat DatebeginDateformat = new SimpleDateFormat("YYYYMMDD"); SimpleDateFormat DatecloseDateformat = new SimpleDateFormat("YYYYMMDD"); Date datebeginDate = DatebeginDateformat.parse( strbeginDate ); Date datecloseDate = DatecloseDateformat.parse( strcloseDate ); intflag = datebeginDate.compareTo(datecloseDate);

    • ベストアンサー
    • Java
  • javaの掲示板について

    投稿日時の取得部分の抜粋なのですが、全てのnew SimpleDateFormatの部分でシンボルが見つからないと言われます。 調べて出てくるところと同じに書いているので、エラーが出てくる原因がわかりません。 変更したり、付け加える点を教えてください。 よろしくお願いします。 import java.sql.*; import java.sql.Timestamp.*; import java.io.*; import java.util.Date.*; import java.text.DateFormat.*; import java.text.SimpleDateFormat.*; import java.util.Vector; public class MessageDao { private static final String DATE_PATTERN = "yyyy.MM.dd HH:mm:ss"; private String date2string(Timestamp timestamp){ SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN); return sdf.format(timestamp); } 投稿メッセージの一覧を取得します public Vector getMessageList() throws Exception { Vector messageList = new Vector(); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = this.getConnection(); String sql = "SELECT * FROM MESSAGE_TABLE ORDER BY ID DESC"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while(rs.next()) { Message message = new Message(); Timestamp timestamp = rs.getTimestamp("DATE"); String strDate = new SimpleDateFormat(DATE_PATTERN).format(timestamp); message.setDate(strDate);

    • ベストアンサー
    • Java
  • 日付フォーマットの変換についての質問。

    こんにちは。宜しくお願いします。 現在、String型で受け取った日付の文字列をData型にして、さらに違う日付フォーマットにするプログラミングを書いています。 具体的には、 String型の"Wed, 07 Dec 2005 00:00:00 +0900"を、 Date型の"Wed, 07 Dec 2005 00:00:00 +0900"に変更して、 同じくDate型の、"2005-12-07T00:00:00+09:00"にしたいのです。 今躓いてる点は、String型の日付をDate型に変換する所で、エラーメッセージが、” Unparseable date: "Wed, 07 Dec 2005 00:00:00 +0900"”となっており、コード修正しても上手くいきません。 現時点でのコードを記述しますので、お時間があるときにご教授お願いします。 ---- import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 時間のフォーマット変換テスト。 * */ public class testConvertTime { public static void main(String[] args) throws ParseException { String strPreTime = "Wed, 07 Dec 2005 00:00:00 +0900"; //2005-12-07T03:00:12+09:00 SimpleDateFormat sdf = new SimpleDateFormat(); //日付の出力形式を設定 sdf.applyPattern( "EEE, dd MMM yyyy HH:mm:ss Z" ); //指定したフォーマットで日付が返される Date dat = sdf.parse(strPreTime); //java.util.Date dat = sdf.parse(strPreTime); } }

    • ベストアンサー
    • Java
  • JavaのDateクラスについて教えてください.

    下のプログラムを実行すると, Date : Mon Jan 30 15:30:00 JST 2006 となります. 私としては,Apr となることを期待するのですが, おかしいでしょうか? Javaの環境は,jdk1.5.0_05 です. // ここから import java.text.SimpleDateFormat; import java.util.Date; public class DateTest { public static void main(String[] args) throws Exception { String dateStr = "2006/04/30 15:30"; Date date = new SimpleDateFormat("yyyy/MM/DD HH:mm").parse(dateStr); System.err.println("Date : " + date); } }

  • importが分からない

    importが違うせいだと思いますが、コンパイルできるように直してください。 import java.util.Date; import java.text.SimpleDateFormat; import java.util.Locale; public class a {  public static void main (String args[]) {   Date d = calendar.getTime();   SimpleDateFormat f = new SimpleDateFormat("EEE", Locale.JAPANESE);   String s = f.format(d);   System.out.println(s);  } }

  • Java ミリ秒からTimeStamp型へ変換

    javaのTimeStampクラスにgetTime() (⇒Timestamp オブジェクトで表される、1970 年 1 月 1 日、0 時 0 分 0 秒 GMT (グリニッジ標準時) からのミリ秒数を返す。) がありますがその逆を行うやり方orメソッドはありますでしょうか? 具体的にはミリ秒からTimeStamp型に変換をしたいです。 どうかよろしくお願いいたします。

    • ベストアンサー
    • Java
  • Date型

    下記のコード内で、「20060618」設定して、出力を「2006年6月18日」としたいのですが、やり方がわかりません。わかる人がいましたらよろしくお願いいたします。また、Date型というのはどのような型のことを言うのでしょうか?初心者的な質問だと思いますがよろしくお願いいたします。 import java.util.*; import java.text.*; class Test { public static void main(String[] args) { Date date1 = new Date(); // Date date1 = format.parse("20011010"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy'年'MM'月'dd'日'"); System.out.println(sdf1.format(date1)); } }

    • ベストアンサー
    • Java
  • JavaでString型をChar型に変換するプログラムが分かりません

    JavaでString型をChar型に変換するプログラムが分かりません;; どなかた助けて下さい。 下のプログラムの何がいけないんでしょうか?? いろいろ間違ってるところはあると思うんですが、教えて下さい! import java.io.*; class { public static void main(String args[]) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); StringBuffer moji = new StringBuffer(str1); char nyuu=moji;

  • ファイル名を動的に生成したい

    ファイル名を日付とその日の中の通し番号にしたいと思っています。 例えば2009/07/17日だったらファイル名を 20090717+その日の中の通し番号とする。 日付をファイル名にするところまではできたのですが「その日の中の 通し番号とする」部分がわかりませんので教えていただきたいのですが。 import java.text.SimpleDateFormat; import java.util.Date; public class CreateFileName { public static void main(String args[]){ Date date1 = new Date(); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); //ファイル名は日付とその日の中の通し番号 String fileName = sdf1.format(date1).toString()+".pdf"; System.out.println(fileName); } }

専門家に質問してみよう