• ベストアンサー

string formatについて

フォームの値(年、月、日)を取得し、 yyyy/mm/ddのようにformatしたいのですが、 以下の場合ですと、年2007 月07 日11 としていると、 例外が発生してしまいます。(java.util.FormatFlagsConversionMismatchException) 元々4桁,2桁あるものに関しては0埋めできないのでしょうか? ご教示願います。 (String.format("%04s/%02s/%02s", form.getStart_date_y(), form.getStart_date_m(), form.getStart_date_d()));

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

Formatter (Java 2 Platform SE 5.0) http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Formatter.html#syntax のフラグの項を見ると、 s 書式指定に対して '0'というフラグを指定することは できないようです。 Cのprintfから連想すると指定できても0による パディングはできないと思います。 もしどうしても0によるパディングをしたいのであれば、 一端整数型にするなどの手段をとる必要があると思います。 "04d", Integer.parseInt(stryear) 見たいな感じで。

rabaraba
質問者

お礼

なるほど! ありがとうございます! できました!

その他の回答 (2)

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.3

・空白に0を埋めるフラグ"0"は書式が整数か浮動少数点("d","f"等)でないとエラーになります。 これがFormatFlagsConversionMismatchExceptionの直接の原因です。 ・書式で"d"を使用するとき、引数に許されるクラスはInteger,Double等の数値を表すクラスです。Stringクラスには適用できません。 以上を踏まえてソースを書き換えるとこうなります。 String.Format("%04d/%02d/%02d",new Integer( form.getStart_date_y ),new Integer( form.getStart_date_m ),new Integer( form.getStart_date_d ))

rabaraba
質問者

お礼

そうなんですねー! ありがとうございます!

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

提示されている情報が少ないので勘違いしていたらごめんなさい。 (String.format("%04s/%02s/%02s", form.getStart_date_y(), form.getStart_date_m(), form.getStart_date_d())); get*_date_?() ってint を返してそうな気がするんですがどうなんでしょうか? エラーメッセージからすると、書式指定が %s なのにint渡しているので 文句言ってるように思えるのですが。

rabaraba
質問者

補足

書き込みありがとうございます。 こちらの説明不足ですいません。 form.get*date()はStringを返しています。 なので%sで大丈夫かと思っているのですが。。

関連するQ&A

専門家に質問してみよう