1

私はjoda-time-jsptags-1.1.1を使用して、次のtaglibを使用してJSPページ上のJoda -Timeベースの日付と時刻オブジェクトをフォーマットおよび解析しています。

<%@taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %>

Oracleデータベースには、標準のUTC形式を使用して保存されている日付があります。

次のJSTLタグを使用して、

<c:set var="startDate" value="${row.discountStartDate}"/>
<c:set var="endDate" value="${row.discountEndDate}"/>

これら2つの日付は、それぞれ次の形式で表示されます。

2013-02-16T22:31:59.000+05:30 
2013-02-28T22:32:03.000+05:30   

これらの日付を特定のタイムゾーンを使用して特定の形式で表示する必要があります。これらの日付を次のように解析しようとしています。

<joda:parseDateTime var="startDate"
                    pattern="dd-MMM-yyyy HH:mm:ss"
                    value="${row.discountStartDate}"
                    dateTimeZone="Asia/Kolkata"/>

<joda:parseDateTime var="endDate"
                    pattern="dd-MMM-yyyy HH:mm:ss"
                    value="${row.discountStartDate}"
                    dateTimeZone="Asia/Kolkata"/>

これらの日付は、指定された形式とゾーンで解析されることを期待しています。ただし、次の例外が発生します。

java.lang.IllegalArgumentException:無効な形式:「2013-02-16T22:31:59.000 + 05:30」は「13-02-16T22:31:59.000 + 05:30」で不正な形式になっています

これらの日付を解析する方法

4

1 に答える 1

5

この例でHibernateを介して返される日付はrow.discountStartDate、明らかにタイプです。row.discountEndDateorg.joda.time.DateTime

これらのプロパティはorg.jadira.usertype.dateandtime.joda.PersistentDateTime、次のようなそれぞれのエンティティクラスで指定されます。

@Column(name = "DISCOUNT_START_DATE")
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime discountStartDate;

@Column(name = "DISCOUNT_END_DATE")    
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime discountEndDate;

したがって、これらの日付をもう一度解析する必要はありません。次のように、これらの日付を特定の形式とタイムゾーンでフォーマットする必要があります。

<joda:format var="startDate"
             value="${row.discountStartDate}"
             pattern="dd-MMM-yyyy HH:mm:ss"
             style="F-"
             dateTimeZone="Asia/Kolkata"/>

<joda:format var="endDate"
             value="${row.discountEndDate}"
             pattern="dd-MMM-yyyy HH:mm:ss"
             style="F-"
             dateTimeZone="Asia/Kolkata"/>

formatタグのvalue属性は、タイプReadableInstantまたはReadablePartial

style属性は、解析に使用するスタイルです。日付用と時間用の2文字を指定します。

S = Short
M = Medium
L = Long
F = Full
- = None

http://joda-time.sourceforge.net/contrib/jsptags/userguide.html

于 2013-02-16T16:26:25.970 に答える