序数インジケーター (11 日、21 日、23 日) を使用した日付の書式設定
日付を扱う場合、多くの場合、出力が必要になります。 「11日」、「21日」などの序数を示す日付。または「23日」。単に数値の日付を使用するだけでも十分ですが、序数のインジケーターを追加すると、日付の明確さと読みやすさが向上します。
提供されている Java スニペットでは、SimpleDateFormat を使用して月の日付を数値として抽出できますが、その方法は適切な序数標識を含めるようにこの数値をフォーマットしますか?
Guava を使用した解決策Library
Guava ライブラリは、序数インジケーターを月の日に追加するエレガントで効率的な方法を提供します。以下は、提供されたスニペットの修正バージョンです:
import static com.google.common.base.Preconditions.*; String getDayOfMonthSuffix(final int n) { checkArgument(n >= 1 && n <= 31, "illegal day of month: " + n); if (n >= 11 && n <= 13) { return "th"; } switch (n % 10) { case 1: return "st"; case 2: return "nd"; case 3: return "rd"; default: return "th"; } }
この関数は、月の日を表す整数を受け取り、適切な序数インジケーターを文字列として返します。 Guava の Preconditions クラスの checkArgument メソッドを使用して、その日が 1 から 31 までの有効な値であることを確認します。
11 日から 13 日までの日については、関数は「th」を返します。これらの日は常に「th」接尾辞。他の日の場合は、モジュロ演算 (%) を使用してその日の最後の桁をチェックします。
使用例
この関数を使用するには、単にその日を渡すだけです引数としての月の。例:
int dayOfMonth = 11; String ordinalIndicator = getDayOfMonthSuffix(dayOfMonth); // "th"
結論
月の日付に序数インジケーターを追加することは、日付書式設定の一般的な要件であり、Guava ライブラリを使用すると、簡単なそして効率的なソリューション。この改善されたスニペットは、元の回答で言及された潜在的なバグを排除し、正しい序数インジケーターが 1 から 31 までの月の任意の日に追加されるようにします。
以上がJava で序数標識 (st、nd、rd、th) を月の日の数値に効率的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。