- PR -

string型をdate型へ

投稿者投稿内容
sarusaru
会議室デビュー日: 2004/03/19
投稿数: 14
投稿日時: 2004-03-23 15:07
初歩的な質問ですいませんが、string型である日付ををdate型に直す時はどのように型変換をかけばよいのでしょうか?
日付は、年月日とそれぞれstring型で分かれており、それをくっつけてDate型の値にしたいのですが。。。
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2004-03-23 15:19
普通は、java.text.DateFormat#parse を使います。

import java.text.DateFormat;
import java.text.SimpleDateFormat;

・・・
DateFormat foramt=new SimpleDateFormat("yyyy/MM/dd");
Date date = format.parse(string_date);
・・・

というような感じです。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-03-23 15:37
coasmさんの方法で万事おっけーなので、蛇足ですが……

1. まずgoogleで「java」「Date」をキーに検索してみます。
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=java+Date&lr=lang_ja

2. 最初の候補を選んでみます。
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Date.html

3a. 色々と説明が書いてありますから、それを読んでみたりします。ついでに「関連項目」から(説明文中にも名前の出てきた)DateFormatを選んでみます。
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/text/DateFormat.html

3b. もしくはコンストラクタの説明で名前が出てきたCalendarクラスを調べてみます。
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Calendar.html

……どの辺りで引っ掛かったのでしょうか?


[ メッセージ編集済み 編集者: 永井和彦 編集日時 2004-03-23 15:51 ]
sarusaru
会議室デビュー日: 2004/03/19
投稿数: 14
投稿日時: 2004-03-23 19:26
回答ありがとうございます。
今、教えていただいたとおりに書いていたのですが、
Date date = format.parse(string_date); のdateのところに
java.util.dateからjava.sql.dateに変換できませんとエラーが出てしまったのですが、
import java.sql.Date;としか、書いてないつもりなのですがどこかでutilを使用していると言うことなのでしょうか?
本当に、初歩的なことですいませんがよろしくお願いします。
Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2004-03-23 19:50
APIリファレンスを見ていただければ分ると思いますが
DateFormat#parseの戻り値はjava.util.Dateです。

sarusaruさんが期待しているDate型というのはjava.sql.Dateなのでしょうか?
なぜ、java.util.Dateではなくjava.sql.Dateを使用しているのでしょう?
(java.sql.Dateを使用したことが無いので良く分らないんですが・・・^_^;)

まー、それにしても下記のようなコードを書けば変換できると思います。
(他にも方法はたくさんあると思いますので、1例)

DateFormat foramt=new SimpleDateFormat("yyyy/MM/dd");
java.util.Date date = format.parse(string_date);
java.sql.Date sqlDate = new java.sql.Date(date.getTime());

何はさておき、APIリファレンスは見る癖をつけた方が良いと思いますよ。
BBC
常連さん
会議室デビュー日: 2002/03/15
投稿数: 37
お住まい・勤務地: 東京
投稿日時: 2004-03-23 20:03
こんばんわ。

コード:

format.parse(string_date);



で返ってくるDate型はjava.util.DateのDate型なので、
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/Date.html
java.sql.DateのData型には直接入りません。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/Date.html

なので、java.util.Calendarを使って、
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Calendar.html
コード:

try {
Calendar c = Calendar.getInstance();
c.set(Integer.parseInt(yyyy), Integer.parseInt(mm) - 1, Integer.parseInt(dd));
Date d = new Date(c.getTimeInMillis());
//後続の処理・・・
}
catch(NumberFormatException ex) {/*文字列が数値化出来なかった時の例外処理*/}


としてやれば、java.sql.Date型を取得出来ると思います。

こんなんでどうでしょ?

# 他の方がシンプルなコードを書いてますね・・・。
# まぁ、yyyy/mm/ddが分かれているという事なので、こんな書き方もありますよって事で。

[ メッセージ編集済み 編集者: BBC 編集日時 2004-03-23 20:10 ]
sarusaru
会議室デビュー日: 2004/03/19
投稿数: 14
投稿日時: 2004-03-23 20:07
ご指摘&回答、ありがとうございます。
APIリファレンスと回答を見て、やっと理解できました。
ありがとうございました。感謝、感謝です。
sarusaru
会議室デビュー日: 2004/03/19
投稿数: 14
投稿日時: 2004-03-24 17:48
たびたび、投稿させていただきます。
先日の、String型からDate型になおして値を取ることはできたのですが、
日付を入力してもらえば上手く値を取れるのですが、値を入れない時は
空白を、自動的?に入力されるようにしたつもりなのですが、
書き方が悪いせいかjava.text.ParseException: Unparseable date: ""とエラーってしまいます。何か、良い方法はないでしょうか?
お力添えをお願いします。
下記のように書いてみたのですが。
DateFormat format = new SimpleDateFormat("yyyy/MM/dd");



} else {
java.util.Date datebef = format.parse("");
java.sql.Date sqlDatebef = new java.sql.Date(datebef.getTime());
reportfrm.setBirthday_tfrom(sqlDatebef);
}

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