web-dev-qa-db-ja.com

Java.sqlタイムスタンプを表示用にフォーマットする方法は?

Java.sqlタイムスタンプを好みに合わせてフォーマットするにはどうすればよいですか? (表示用の文字列へ)

97
nos

Java.sql.TimestampJava.util.Dateを拡張します。できるよ:

String s = new SimpleDateFormat("MM/dd/yyyy").format(myTimestamp);

または、時間も含めるには:

String s = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(myTimestamp);
156
ChssPly76

String.format(または Java.util.Formatter )を使用します。

Timestamp timestamp = ...
String.format("%1$TD %1$TT", timestamp)

編集:
TDおよびTTの意味を理解するには、Formatterのドキュメントを参照してください: Java.util.Formatter をクリック

最初の「T」は以下を表します:

't', 'T'    date/time   Prefix for date and time conversion characters.

そして、その「T」に続く文字:

'T'     Time formatted for the 24-hour clock as "%tH:%tM:%tS".
'D'     Date formatted as "%tm/%td/%ty". 
24

この特定の質問に対して、Java.text.SimpleDateFormatの標準的な提案は機能しますが、SimpleDateFormatスレッドセーフではありませんマルチスレッドシナリオでは出力が破損し、例外が発生しないため、特に厄介な問題の原因になります。

私は強くこのようなものについては Joda を見ることをお勧めします。どうして ? Javaの現在のライブラリよりもはるかにリッチで直感的な時刻/日付ライブラリです(そして、今後の新しい標準Java日付/時刻ライブラリの基礎であるため、 「まもなく標準になるAPIを学習します)。

9
Brian Agnew

MySQLを使用していて、データベース自体で変換を実行する場合、これを使用します。

DATE_FORMAT(date、format)

Javaを使用してフォーマットする場合、これを使用します。

Java.text.SimpleDateFormat

SimpleDateFormat dateFormat = new SimpleDateFormat("M/dd/yyyy");
dateFormat.format( new Date() );
8

DateFormat を使用します。国際化されたアプリケーションでは、 getInstance で提供される形式を使用します。形式を明示的に制御する場合は、新しい SimpleDateFormat を自分で作成します。

2
erickson