web-dev-qa-db-ja.com

Java日付形式-追加の文字を含む

Javaでphp date()スタイルのフォーマットに相当するものはありますか?つまり、PHPではバックスラッシュエスケープ文字を使用して文字どおりに処理できます。つまりyyyy\y\e\a\r2010年になります。 Javaで似たようなものは見つかりませんでした。すべての例は組み込みの日付形式のみを扱っています。

特に、 JCalendar 日付ピッカーとそのdateFormatStringプロパティを扱います。

私のロケールでは、dのような日付形式であらゆる種類の追加項目を記述する必要があるため、これが必要です。 (日用)日の部分の後、m。 (何年も)数年後など。最悪の場合、文字列の置換または正規表現を使用できますが、おそらくもっと簡単な方法がありますか?前もって感謝します!

72
Sejanus

もちろん、 SimpleDateFormat を使用すると、リテラル文字列を含めることができます。

日付と時刻のパターン文字列内で、「A」から「Z」および「a」から「z」の引用符で囲まれていない文字は、日付または時刻文字列のコンポーネントを表すパターン文字として解釈されます。解釈を避けるために、単一引用符( ')を使用してテキストを引用できます。 「 ''」は一重引用符を表します。他のすべての文字は解釈されません。フォーマット中に出力文字列にコピーされるか、解析中に入力文字列と照合されます。

 "hh 'o''clock' a, zzzz"    12 o'clock PM, Pacific Daylight Time
136
Thilo

完全を期すために、Java 8のDateTimeFormatterもこれをサポートしています。

DateTimeFormatter.ofPattern("yyyy 'year'");
11
Mark Jeronimus

Java.util.Formatter で説明されているように、String.formatを使用できます。

Calendar c = ...;
String s = String.format("%tY year", c);
// -> s == "2010 year" or whatever the year actually is
7