[Seasar-user:8699] Re: Timestamp型の秒以下の桁を取得するには

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 6月 27日 (水) 04:04:11 JST


小林 (koichik) です.

Date:    Tue, 26 Jun 2007 23:23:50 +0900
From:    <[E-MAIL ADDRESS DELETED]>
To:      <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:8697] Timestamp型の秒以下の桁を取得するには

> DBから取得したカンマ6桁までのTimestamp型のデータを
> @TimestampConverterを使って取得し、画面に表示させたいのですが、
> 
> @TimestampConverter(pattern="yyyy/MM/dd HH:mm:ss.SSSSSS")
> 
> のように記述しても3桁までしか取得できません。

TimestampConverter は SimpleDateFormat を使っており,
SimpleDateFormat のパターン文字 S は「ミリ秒」なので
4 桁以上指定しても意味はありません.

> 6桁全てを取得し、画面に表示するためには、
> pattern部にはどのように記述すればよいのでしょうか?

Timestamp はナノ秒まで保持できるので全部出すと
9 桁ですが,いずれにせよ DecimalFormat と組み合わせた
独自のコンバータを作らないといけないような.
その中で

Timestamp timestamp = ...
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.");
DecimalFormat numberFormatter = new DecimalFormat("000000");
return dateFormatter.format(timestamp) + numberFormatter.format(timestamp.getNanos() / 1000));

のようにすればいいのではないかと.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




Seasar-user メーリングリストの案内