3

MySql db を読み取り、DateTime フィールドを返す Java Web アプリがあります。結果セットで返された DateTime フィールドをより読みやすいものに変換する最良の方法は何ですか?

現在、DateTime フィールドは次のように出力されます。

2008-12-14 16:30:00

しかし、私は次のようなよりユーザーフレンドリーなものが欲しいです:

2008 年 12 月 14 日 16:30

pojo からこれらの dateTimes を ArrayList に入力しています。arrayList に追加する前にそれらをフォーマットしたいので、JSP で arrayList の内容を出力するだけです。

4

5 に答える 5

5

もう 1 つのオプションは、JSTL を使用することです。フォーマット ライブラリを使用すると、任意のフォーマットで日付を簡単に表示でき、i18n 対応です。利点は、日付を Date オブジェクトのままにしてそのまま操作できるが、表示する必要がある場合にのみ変換できることです。フォーマットタグは次のようになります。

<fmt:formatDate value="${myDate}" dateStyle="MEDIUM"/>

上で述べたように、大きな利点の 1 つは、国際化に対応しているため、ローカライズされた形式で日付を表示できることです。

完全な構文は次のとおりです。

 <fmt:formatDate value="expression" 
     timeZone="expression"
     type="field" dateStyle="style" 
     timeStyle="style"
     pattern="expression"
     var="name" scope="scope"/>
于 2008-12-20T20:28:45.847 に答える
3

Mysql date_format()

mysql> select date_format(now(),'%d %b %Y at %H:%i') as formated_date;
+----------------------+
| formated_date        |
+----------------------+
| 20 Dec 2008 at 10:56 | 
+----------------------+
于 2008-12-20T18:56:54.923 に答える
1

私のコードがデータベース関数にバインドさsimpleDateFormatれないように、Javaコードでを使用したいと思います(弱い理由、私は知っています)。

    Date date = ...
    DateFormat df = new SimpleDateFormat("dd MMM yyyy 'at' HH:mm");  // Locale?
    String text = df.format(date);

SimpleDateFormatスレッドセーフではないことに注意してください。ドキュメントから:

日付形式は同期されません。スレッドごとに個別のフォーマットインスタンスを作成することをお勧めします。複数のスレッドが同時にフォーマットにアクセスする場合は、外部で同期する必要があります。

于 2010-01-18T00:13:11.633 に答える
0

データベース上にどのような抽象化レイヤーがありますか? フィールドクラスとして使用しているものをサブクラス化し、フォーマットのメソッドを追加する単純なケースのように見えます。

于 2008-12-20T19:05:12.833 に答える
0

実際のデータ(日付/時刻)があり、フォーマットが関連するページレベルでフォーマットするため、タグフォーマットオプションをお勧めします(たとえば、適用するロケールなど)。

とにかくそれをフォーマットして文字列を List に入れたい場合はjava.text.SimpleDateFormat、Carlos Heuberger が言うように使用します。

于 2010-01-18T00:28:45.077 に答える