- PR -

string型をdate型へ

投稿者投稿内容
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-03-24 18:17
引用:

空白を、自動的?に入力されるようにしたつもりなのですが、
書き方が悪いせいかjava.text.ParseException: Unparseable date: ""とエラーってしまいます。何か、良い方法はないでしょうか?


空白は"yyyy/MM/dd"形式に則ってないので、当然のエラーでしょう。

対策としては、format.parse を実行する前に空白かどうかチェックして、
空白なら実行しないようにするのが一番単純じゃないですか?
sarusaru
会議室デビュー日: 2004/03/19
投稿数: 14
投稿日時: 2004-03-24 18:42
返答ありがとうございます。
検索画面で、この項目を使用してるので実行しないわけにはいかないもので。。。
空白かどうかの確認は、if文の条件で行なっているのですが。
if((frm.getBirthdayyto() != null && frm.getBirthdaymto() != null && frm.getBirthdaydto() != null) && (!frm.getBirthdayyto().equals("") && !frm.getBirthdaymto().equals("") && !frm.getBirthdaydto().equals("")) )
{
java.util.Date datebtt = format.parse(frm.getBirthdayyto() + frm.getBirthdaymto() + frm.getBirthdaydto());
java.sql.Date sqlDatebtt = new java.sql.Date(datebtt.getTime());
reportfrm.setBirthday_tto(sqlDatebtt);
}
って感じで書いているのですが駄目なのでしょうか。。。
ご指導お願いします。
空白が駄目でしたら、Nullでもかまいませんので宜しくお願いします。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-03-24 18:56
引用:

空白が駄目でしたら、Nullでもかまいませんので宜しくお願いします。



コード:
catch(ParseException e){
    sqlDatebef = null;
}



でいいのでは?

で、これは宿題でしょうか?自己啓発なら、こんなに短絡的に答えだけを欲しがらないでしょうし。
もし、万が一業務でやられているのでしたら、素直に「出来ません」と言ってしまった方が傷が浅くて済むと思いますが……。

特にException辺りは、ワケがわからないままコーディングすると深刻な問題に発展する場合もありますから、お気を付け下さい。
teruteru
会議室デビュー日: 2004/03/24
投稿数: 2
投稿日時: 2004-03-24 19:42
回答及び指摘ありがとうございます。
学校の宿題で、休んでしまった所の内容でわからなかったので、すいませんでした。。。
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-03-24 19:42
if文で、空やnullの場合はparseしないようになってるので、
単純に後ろにelseをつけて、明示的に
コード:
} else {
    sqlDatebef = null;
}


とすればいいだけでは?
ただし、frm.getBirthdayyto、frm.getBirthdaymto、frm.getBirthdaydtoに
変な値が入ってないように事前にチェックされているのが前提ですが。
(アルファベットが入ってたり、月のところに13以上の数字が入ってたりとか)

※永井和彦さんの方法でも、もちろんいいと思います。
sarusaru
会議室デビュー日: 2004/03/19
投稿数: 14
投稿日時: 2004-03-24 19:44
teruteruさんがなぜ御礼を??
他の方々た、ありがとうございました。
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2004-03-24 19:53
多分こんなコードなんじゃないかなあ・・・。

コード:
DateFormat format = new SimpleDateFormat("yyyy/MM/dd"); 

if(frm.getBirthdayyto() != null
   && frm.getBirthdaymto() != null
   && frm.getBirthdaydto() != null
   && !frm.getBirthdayyto().equals("")
   && !frm.getBirthdaymto().equals("")
   && !frm.getBirthdaydto().equals(""))
{ 
  // Birthday{y|m|d}to が指定されている場合

  java.util.Date datebtt = format.parse(frm.getBirthdayyto()
                                        + frm.getBirthdaymto()
                                        + frm.getBirthdaydto()); 
  java.sql.Date sqlDatebtt = new java.sql.Date(datebtt.getTime()); 
  reportfrm.setBirthday_tto(sqlDatebtt); 
} else { 
  // Birthday{y|m|d}to のどれかが null または空白の場合

  java.util.Date datebtt = format.parse(""); 
  java.sql.Date sqlDatebtt = new java.sql.Date(datebtt.getTime()); 
  reportfrm.setBirthday_tto(sqlDatebef); 
}


スキルアップ/キャリアアップ(JOB@IT)