• ベストアンサー

Stringのフォーマットの変換方法(Java)

Java実行時の引数として渡した14桁の数値(文字列)を、 ----- yyyy-mm-dd hh:mm:ss ----- の形式にフォーマット変換したいです。 (日時のように書いてますが、型はDateやTimestampではなくStringのままでもOK) 文字列をsubstringメソッドで区切って、 その後に「-」や「:」と+で文字列連結させる方法も考えたのですが、 そのようにせずにもう少しシンプルに変換する方法はありませんでしょうか?

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

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

  • ベストアンサー
回答No.1

かなり手抜きですが、例えばこんな方法があります。 String stringDate ="20111018000800"; DateFormat inDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); DateFormat outDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date; try { date = inDateFormat.parse(stringDate); System.out.println(outDateFormat.format(date)); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }

hakase-chan
質問者

お礼

早速ありがとうございます。 質問する前に丁度教えて頂いていた書き方をしていたのですが、 何故かMM(月)の部分が何を入力しても"00"になってしまっていました。 hanabutakoさんの回答をそもままコピペして実行したところ、 問題無く表示されてました。。。 なんなのでしょうか。。。

関連する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
  • 日付のフォーマット変換について

    はじめまして。 日付フォーマット変換について質問です。 「Tue Sep 16 04:06:38 JST 2003」 上記のようなStringの値を yyyy/mm/dd hh:mm:ssのように 変換したいのですが、どのような方法を とれば良いのかわからず困っております。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • C#による日付のフォーマット変換について

    初めまして。 大学にてC#を勉強中の身なのですが、文字列の日付フォーマット 【YYYY/MM/DD → DD-MMM-YY】 への変換方法が分からず困っています。 よろしければどなたかご教授して頂けないでしょうか? ※このような形に変換を希望しています string型 【2000/01/01】 → string型 【01-Jan-00】

  • 日付や時刻の"01"を" 1"に変換したいです。

    下記のような問題で悩んでいます。何かよいアイディアがありましたら教えて下さい。 【要件】 ・SimpleDateFormatで指定された書式の文字列にした後、年月日時分秒ミリ秒の"01"~"09"を" 1"~" 9"のように前0を半角スペースに一括変換したい(年は書式がyy形式の場合のみ)。 ・SimpleDateFormatへの書式はエラーが起きない限りどんなものでも受け入れる(通常、書くわけがない書式についても)。 例) "yyyy/MM/dd HH:mm:ss:SSS" "'yyyy/MM/dd HH:mm:ss:SSS形式:'yyyy/MM/dd HH:mm:ss:SSS"  ※''の中にあるMMはテキストなので英字のまま。 "yyyy/MMMMMMMMMMMMMMMMMMMM/dd HH:mm:ss:SSS"  ※Mの数は不明 "yyyy/MM/dd MM MM HH:mm:ss:SSS"  ※月の表示指定が複数 引数 :日付(yyyyMMddHHmmssSSS形式), SimpleDateFormatへの書式 戻り値:SimpleDateFormatで変換後に"01"~"09"を" 1"~" 9"にした文字列 自分なりの検討案としては下記になります。 a.引数の書式をそのままSimpleDateFormatに引き渡ずに、一部修正してから呼び出す。 例)"yyyy/MM/dd HH:mm:ss:SSS"→yyyy/_M/_d _H:_m:_s:__S" ※"_"は半角スペースです。 実際はMやdなどが2桁になる場合は変換しません。 かなりごりごり200行ぐらい試しに書いたのですが、対応できないケースが出てきてその都度エンドレス状態です。 ちょっとこのまま実装するわけにいきません。いつバグがでるか・・・。 b.SimpleDateFormatで変換後に年月日時分秒ミリ秒に該当する箇所に"01"~"09"があったら置換する。  引数の書式からMMやddのindexを保持して、SimpleDateFormatで変換後の該当indexに置換。 例) 書式:"yyyy/MM/dd_HH:mm:ss:SSS" 日付:"20090101010101001" "2009/01/01_01:01:01:001"→"2009/_1/_1__1:_1:_1:__1" ※"_"は半角スペースです。 但し前提として、書式とSimpleDateFormatで変換後の文字列が1対1になっている必要があります。 単純な例ですと 書式:"yyyy/MMMM/dd HH:mm:ss:SSS" 書式のddは11~12桁目ですが、SimpleDateFormatで変換後は下記のようにインデックスがずれます。 "2009/1月/01 01:01:01:001" "2009/12月/01 01:01:01:001" もしかしたら下記のような感じで吸収できるのかもしれませんが、ちょっと個人的に出来そうに思えませんでした。 月が1桁 かつ 書式が"M"の場合 月が1桁 かつ 書式が"MM"の場合 月が1桁 かつ 書式が"MMM"の場合 月が1桁 かつ 書式が"MMMM"の場合 月が1桁 かつ 書式が"Mxn"の場合 月が2桁 かつ 書式が"M"の場合 月が2桁 かつ 書式が"MM"の場合 月が2桁 かつ 書式が"MMM"の場合 月が2桁 かつ 書式が"MMMM"の場合 月が2桁 かつ 書式が"Mxn"の場合 ここ1,2週間ほど煮詰まっています。どなたかアドバイス頂けると助かります。 自分的なネックは書式が限りなくフリー形式なところです。

    • ベストアンサー
    • Java
  • 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
  • SQL*Loader  フォーマット変換について

    SQL*Loaderの制御ファイル内で、 以下のような日付データを変換するにはどうしたらよいでしょうか? ・2010-12-06 00:00:00.000 以前は'2010-12-06 00:00:00'の形式だったので "to_char(to_date(:DENPYO_DATE,'YYYY-MM-DD HH24:MI:SS'),'YYYYMMDD')" のようにして変換が可能だったのですが、仕様変更がありましてこれに対応しなければいけなくなりました。 ちなみに安易な考えで以下のようにしたのですがさすがにだめでした... "to_char(to_date(:DENPYO_DATE,'YYYY-MM-DD HH24:MI:SS.000'),'YYYYMMDD')" 方法をご存知の方がいれば是非、ご教示いただきたく存じます。 よろしくお願いいたします。

  • 日付型→文字列

    SQLServer2005の環境にて、 日付型の項目(YYYY/MM/DD HH:MM:SS)から日付のみを抽出したい場合、 現在SUBSTRING(CONVERT(VARCHAR,AA),1,10) と変換を行っているのですが、結果が「MM DD YYYY」となってしまいます。 「YYYY/MM/DD」の形式で取得するにはどのようなSQL文にすればよろしいのでしょうか。

  • Timestamp(?)の値を変換したい

    画面遷移の正当性をチェックしたり、キャッシュ利用を防ぐために、Postdataに現在日時を数値化した値(TimeStamp?)がセットされていたりする場合があります。 ex.1205558668656 この値をExcelやVBAなどでYYYY/MM/DD hh:mm:ssの形式に変換したいのですが、どのように行えばよいのでしょうか。

  • javaのCalendar型を日付型に変換したい

    Calendar型の変数をフォーマット付き("yyyy/MM/dd hh:ss")に変換したいのですが上手い方法が見つかりませんでした。 初心者でも無いのですが、変換の方法があったらご教示願います。 よろしくお願いします。

    • ベストアンサー
    • Java
  • MySQLのTimestamp(14)型のフィールドにYYYY/MM/DD hh:mm形式のデータをインサートするには

    MySQLのTimestamp(14)型のフィールドに YYYY/MM/DD hh:mm形式のデータをインサートするには どのようにしたらよいのでしょうか? MySQL の Timestamp(14)型(YYYY-MM-DD hh:mm:ss)のフィールドに YYYY/MM/DD hh:mm 形式のデータ(ssに該当するデータがない)を インサートするには、 PHPでどのようにしたらよいのでしょうか? できれば、インサートの際にssに自動的に00をつけたいです。 現在、PHPでinsert文を実行すると、データの桁数が足りないため、 フィールドの値は、0000-00-00 00:00:00になってしまいます。 同じ形式(YYYY/MM/DD hh:mm)のデータをphpMyAdminで インポートすると、自動的にssに00がつき、 YYYY-MM-DD hh:mm:ss(例 2009-10-20 12:10:00) となってくれます。 PHPでもphpMyAdminと同じ処理をしたいのですが、 インターネットで検索してもやり方が見つからず、 どのようにしたらよいのか、わかりません。。。 インサートするデータサイズが83MBと大きいので、 PHPで処理したいと思っています。 (phpMyAdminは8MBまでなので) ご存知の方がいましたら、教えていただけると、 助かります。m(_ _)m レンタルサーバー:さくら インサートするファイル:CSVファイル PHP 5.2.x MySQL 5.1 phpMyAdmin 3.1.3.1

    • ベストアンサー
    • MySQL

専門家に質問してみよう