2013-03-19 3 views
5

このジレンマには、このサイトでいくつかの解決策がありましたが、私はJoda Timeをインストールしていませんが、なぜこれが失敗したのかはまだ分かりません。DateFormat.parse()を使用して解析できない日付

解決策の1つとしてコロンを削除しようとしましたが、それは役に立たなかったです。

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

が、私はこのエラーを取得する:java.text.ParseException:解析できない日:「2013-03-07T11:57:08.596を-05:Zとしてフォーマットさ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); 
%> 
+2

関連:http://stackoverflow.com/a/2202300/738746 –

答えて

12

タイムゾーンは-0500、ない-05:00でなければなりません。

だから私はあなたが

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

が利用可能なフォーマットの詳細についてはSimpleDateFormat's javadocを参照してください

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

を交換することをお勧めしたいです。

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

currentDate = currentDate.replaceAll(":(\\d\\d)$", "$1") 
+0

java.lang.IllegalArgumentException:不正なパターン文字「X」 –

+0

JDKについて教えてください。私はJava 7でそれをテストし、正常に動作します。 –

+6

「X」パターンはJava 7の新機能です。 – Perception

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()); %> 

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

1

は、酒に酔ったボットによるソリューションをテストした後、私は-0530 (India).

のように、半時間とタイムゾーンが動作しないことがわかりので改善答えはそのためです。

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

は、追加XXに注意してください。今、また分が考慮されます。

関連する問題