- - PR -
Dateクラスで曜日を表示したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-06-08 11:02
お世話になっております。
Seasar2で開発をしています。 環境: Windows XP Dolteng 0.17.0 s2framework-2.4.8 s2Dao-1.0.39 H2 Database Engine Dateクラスで日付と曜日を表示したいのですが、 曜日は表示されません。 ソースコードは、次のようなかんじです。 Date rentDate = new Date(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd (EE)"); df.format(rentDate); rentInfo.setRentDate(rentDate); rentInfoDao.insert(rentInfo); //insert()のSQLはS2Daoが自動生成する 【RentInfo.java】 public class RentInfo { private Date rentDate; public void setRentDate(Date rentDate) { this.rentDate = rentDate; } ------getter省略--------- } 【RentInfoDao.java】 public interface RentInfoDao { public Class BEAN = RentInfo.class; public int insert(RentInfo rentinfo); } これで、データベースにinsertされるのは 2007-06-08 という日付だけです。 2007-06-08 (金) というように 曜日もいっしょにinsertしたいのです。 rentInfoテーブルのrentDateカラムの データ型は Date です。 Date型では、曜日はinsertされないのでしょうか? ご教授いただけたら、ありがたいです。 宜しく御願いいたします。 | ||||||||
|
投稿日時: 2007-06-08 11:20
文字列型などではないので、表示形式が違うだけです。
H2 Database Engineというのは知りませんが、 oracleなら、「TO_CHAR」などを使用すれば取得できます。 #日付型であるならば、曜日のinsert自体無意味ですね。 | ||||||||
|
投稿日時: 2007-06-08 11:24
曜日は日付から一意に決まるので、insertしてもデータの無駄でしょう。
>2007-06-08 これはビュアが自動的に文字列に直してくれてるだけで、DBにこういう形で登録されてるわけではないです。 insertしたいなら、 >df.format(rentDate); せっかくフォーマットしたのに捨ててしまってる、この文字列を入れないと。 ただ、その場合はDBからのselect時に、文字列をパースしてDateに直してあげないといけませんが。 | ||||||||
|
投稿日時: 2007-06-08 11:27
曜日は、固有の情報として保存されるものではありません。 だいたい、日付が決まれば、曜日も決まるでしょ。
「df.format(rentDate)」が何を意味するのか、理解していますか? これがどのような動作を行うのか、 どんな結果を返すのかをちゃんと確認したら、 さらに、ここでこのコードが必要なのかどうか判断できるようになったら、解決するでしょう。 | ||||||||
|
投稿日時: 2007-06-10 11:10
Edossonさん、mioさん、koxさん、
お返事ありがとうございました。 私なりにいろいろ試したのですが、 うまくいきません。 そこで、今度は、insertではなくselectする時に、 rentInfo = rentInfoDao.findRentInfo(); Date rentDate = rentInfo.getRentDate(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd (EE)"); String date = df.format(rentDate); rentDate = df.parse(date); rentInfo.setRentDate(rentDate); と、書いてみたのですが、これでも 表示されるのは、2007-6-10 だけで 曜日は表示されません。 根本的なことが、わかってないのでしょうか? [ メッセージ編集済み 編集者: kokansetu 編集日時 2007-06-10 11:15 ] [ メッセージ編集済み 編集者: kokansetu 編集日時 2007-06-10 11:19 ] [ メッセージ編集済み 編集者: kokansetu 編集日時 2007-06-10 11:21 ] | ||||||||
|
投稿日時: 2007-06-10 11:41
yyyy/MM/dd (EEE)としてみて。
あと 「日曜」「月曜」…「土曜」という戻り値を求めているなら無理だった気がします。 ぁ・・・ DATE型にもどしてたらフォーッマトきえるの当たり前・・・・ [ メッセージ編集済み 編集者: 杏 編集日時 2007-06-10 11:43 ] | ||||||||
|
投稿日時: 2007-06-10 15:05
杏さん、お返事ありがとうございました。 DATE型にもどさずにSTRING型のままにしたら 曜日も表示されました。 ありがとうございました。 | ||||||||
|
投稿日時: 2007-06-10 18:38
解決してしまったようですが、日付型について根本的なところがわかっていないと思われます。
Date型に値の実体は、ある特定の数値です。たとえば、Java でのDate型は、 「1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数」 と定義されています。 言い換えると、この数値には、年月日、曜日、時分秒ミリ秒など、全ての情報が格納されています。 表示するときに、年月日、月日、曜日付きの年月日など、いろいろな形式に変換するわけです。 このあたりの基本を理解しておかないと、日付を日付型ではなく、8桁の文字列とかで操作したりするようになります。 |