2016-12-15 5 views
1

ソースFastDateFormat.getInstance("HHmmssS").format(Calendar.getInstance());は、 "HHmmssSSS"という形式の文字列を返します。代わりに152712599が必要です。1527125FastDateFormat HHmmssSのような動作HHmmSSS

パッケージとバージョンは、 "パッケージorg.apache.commons.lang3.time; @version $ Id:FastDateFormat.java 1591488 2014-04-30 21:49:35Z"です。

回避策は、以下のソリューションで提供されます。

+0

まあ、FastDateFormat' 'でサポートされていないが、私のlibに[Time4J]により、 (例:System.out.println(ChronoFormatter.ofTimePattern( "HHmmssS"、PatternType.CLDR、Locale.ROOT).format(PlainTime.nowInSystemTime()); ' // 1633154であり、より速い(特に、フォーマッタが静的定数 - スレッドセーフとして格納されている場合)。 –

答えて

2

実際には、何ミリ秒ではなく、10分の1秒ですが、あなたは正しいですが、それはまだサポートされていません。

単一の「S」でフォーマットすると実際のミリ秒しか得られないことに注意してください。フォーマット文字列"HHmmssSSS"を使用する必要があります。部分文字列自体の長さは"HHmmssS".length()でなければなりません。

だからあなたの実際の回避策/解決策ではなく次のようになります。

public static <Format> String HHMMssS(final Format calendar) { 
    final String HHmmssS = "HHmmssSSS"; 
    return FastDateFormat.getInstance(HHmmssS).format(calendar).substring(0, "HHmmssS".length()); 
} 

関連する質問(構文解析について): Deci and Centi Seconds parsing in java

0

回避策は、 'HHmmssSSS'の最後の2桁を切り捨てます。

関連する問題