web-dev-qa-db-ja.com

Java DateUtils.parseDateでZuluタイムゾーンを認識するにはどうすればよいですか?

日付は2008-12-23T00:00:00Zの形式です。これは、Zulu(UTC)タイムゾーンの ISO 8601形式 によく似ています。次のコードはそれを解析しますが( commons-lang を使用):

String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern();
Date d = DateUtils.parseDate(dateToParse, new String[] { pattern });

同じパターン(yyyy-MM-dd'T'HH:mm:ssZZ)を使用してタイムゾーンを削除すると、機能します。

Zuluのタイムゾーンをどのように認識できるか知っていますか?私はJava 1.4とJakartacommons-langにしかアクセスできません。いいえ Joda Time 私にとってはまだ...

16
Guillaume

Commons-langのFastDateFormatのバグのようです。それについて彼らに話してください、そしてあなたは最終的に修正を得るはずです。それまでは、日付を前処理して「Z」を「+00」に置き換えることができます。

4

Commons-langは、Javaの組み込みのDateFormatまたはSimpleDateFormatを使用しており、日付に対してParseExceptionをスローしていると思います。すべての入力文字列が末尾のZで終わる場合は、次のように使用できます。


Java.text.DateFormat df = new Java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
// explicitly set timezone of input if needed
df.setTimeZone(Java.util.TimeZone.getTimeZone("Zulu"));
Java.util.Date date = df.parse("2008-12-23T00:00:00Z");
46
Argelbargel