1

私のアプリケーションでは、次のようなコードを使用しています。

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
String s = df.format(d);

さまざまなロケールで使用されるアプリケーションで日付をフォーマットします。時々、これに秒を追加したいのですが、ロケールベースのフォーマットの能力を失うので、SimpleDateFormatを使用して特定のフォーマットを1つだけ指定したくありません。

それで、ロケール形式の日付に小さな変更を加える方法を誰かが知っていますか?

乾杯、

クリス

4

1 に答える 1

0

私が見つけた唯一の簡単な解決策は、FieldPosition を使用することです。

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
StringBuffer sb = new StringBuffer();
FieldPosition fp = new FieldPosition(DateFormat.MINUTE_FIELD);
sb = df.format(d, sb, fp);
sb.insert( fp.getEndIndex(), new SimpleDateFormat(":ss").format(d) );
String s = sb.toString();

これは、文字列内の分のフィールドの位置を見つけて、その直後に秒を追加できるようにします。これに関して私が見ることができる唯一の本当の問題は、少し醜いことを除けば、「:」が正しいセパレーターではない可能性があり、すでに秒が含まれている可能性があることです。誰でもより良い答えを見ることができますか?

于 2009-12-04T11:32:53.467 に答える