• ベストアンサー

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()));

  • Java
  • 回答数3
  • ありがとう数5

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

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

  • String.formatの使い方

    JavaでString.formatを使いたいですが、書式指定のしかたがよくわかりません。 下記ソースの時、 java.util.MissingFormatArgumentExceptionエラーとなりますが、 どうしたらエラーとならないように正常にできますか? String format = "%1$-6.6s%2$-4.4s"; Object data = "AAAAAA, 1234"; System.out.println(String.format(format, data));

    • ベストアンサー
    • Java
  • Stringのフォーマットの変換方法(Java)

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

    • ベストアンサー
    • 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
  • 日付フォーマットの変換についての質問。

    こんにちは。宜しくお願いします。 現在、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 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
  • Date フォーマット

    JavaScritp初心者です。 Dateオブジェクトの形式ですが、 ネットで調べると、みなさん色々工夫されてフォーマットしていますが、(プラグイン配布など) 2014年現在でも、簡単に(数行で)フォーマットできないのでしょうか? var d=new Date(); console.log(d); フォーマット: yyyy/mm/dd(2014/02/26)や yy年m月d日(2014年2月26日)など JQueryでもいいのですが、 お手数ですが、よろしくお願いします。

  • 日時の表示について

    はじめまして。 JAVAサーブレットの勉強を始めたのですが、わからないことがあり、お伺いいたします。 BBSに投稿後の日時入れたいと思っているのですが上手く表示されません。 ソースが3つあり、 (1)拡張子jspのソース  ここでBBSの投稿フォームおよび投稿後のフォームの呼び出し (2)拡張子javaのソース  フォームから入力された内容の取得および「bean」へ登録 (3)拡張子javaのソース  投稿内容の値の保持および取り出し となっています。 私は下記のように追加したのですが、上手く表示させることが出来ませんでした。 (1) <%@ page import="java.util.Date" %> <% SimpleDateFormat formatter; Date date =new Date(); formatter = new SimpleDateFormat("yyyy年mm月dd日kk時mm分"); time = formatter.format(date); %> <input type="hidden" name="time" value= <%= "time">> <%= bean.getTime() %> (2) String time = request.getParameter("time"); bean.setTime(time); (3) private String mTime; public void setTime(String Time){ mTime = Time; } public String getTime(){ return mName; } 他に表示のさせ方があるのでしょうか。 よろしくお願いいたします。

  • DataGridViewでyyyy/MM/dd

    SQLServer2008で作ったデータベースをVB2010のDataGridViewで表示させております。 DataGridViewで日付列を"yyyy/MM/dd"のスラッシュ入り10桁で表示させたいのですが表示されません。 データベース側でのデータ型は「date」となっております。 DataGridView1.Columns("日付").DefaultCellStyle.Format = "yyyy/MM/dd" こう記述すればいいと思ったのですが、「20111227」とスラッシュ無しで表示されてしまいます。 DataGridView1.Columns("日付").DefaultCellStyle.Format = "yyyy年MM月dd日" これは「2011年12月27日」と表示することを確認できました。 DataGridView1.Columns("日付").DefaultCellStyle.Format = "yyyy-MM-dd" これは「2011-12-27」と表示することを確認できました。 どのようにしたら"yyyy/MM/dd"形式で表示させることが出来るのでしょうか 指導のほど、よろしくお願い致します。

  • 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); } }

  • 年、月、日がそれぞれ一つずつのテキストボックスにformat関数を使う方法

    format関数を使って年、月、日のテキストボックスに記入したいのですができません なお、テーブルにはYYYY/MM/DDと一緒に入ってます また、アクセスのフォームのテキストボックスに対する文字数制限はできますか?

専門家に質問してみよう