5

このジレンマに対して、このサイトの他のいくつかのソリューションに従いました。Joda Time はインストールしていませんが、なぜこれが失敗するのかについてはまだ途方に暮れています。

1つの解決策が述べたように、コロンも削除しようとしましたが、それは役に立ちませんでした.

currentNode.getProperty("jcr:created").getString()= 2013-03-07T11:57:08.596-05:00

次のエラーが表示されます: java.text.ParseException: Unparseable date: "2013-03-07T11:57:08.596-05:00"

<%@page import="
    java.util.Date,
    java.text.SimpleDateFormat,
    java.text.DateFormat"
%>
<%
    DateFormat outputFormat = new SimpleDateFormat("MMMM dd, yyyy");
    DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
    String currentDate = currentNode.getProperty("jcr:created").getString();
    Date date = inputFormat.parse(currentDate); // <-- Failing here
    String currentDateString = outputFormat.format(date);
%>
4

3 に答える 3

13

タイムゾーンは、ではなく、でZある必要があります。-0500-05:00

だから私はあなたが交換することをお勧めします

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");

使用可能なフォーマットの詳細については、SimpleDateFormatのjavadocを参照してください。

jdkでXパターンが許可されていない場合は、入力文字列を修正して。を削除する必要があります:。これは正規表現で行うことができます:

currentDate = currentDate.replaceAll(":(\\d\\d)$", "$1")
于 2013-03-19T16:55:44.377 に答える
0

この質問には回答済みですが、作成日を「MMMM dd,yyyy」の形式で表示することだけが要件である場合は、解決策を実現する別の方法があります。

getTime() を使用して日付オブジェクトを取得できる Calendar オブジェクトを返す Property オブジェクトの getDate() メソッドがあります。

したがって、上記のコードは、以下に示すように書き直せば機能します。

<%@ page import="java.util.Calendar,
    java.text.SimpleDateFormat,
    java.text.DateFormat" %>
<%
DateFormat outputFormat = new SimpleDateFormat("MMMM dd, yyyy");
Calendar currentDate = currentNode.getProperty("jcr:created").getDate();
String currentDateString = outputFormat.format(currentDate.getTime()); %>

したがって、文字列を日付に変換してから残りの操作を実行する必要がなくなります。お役に立てれば。

于 2013-03-20T04:08:45.207 に答える