ホームページ > Java > &#&チュートリアル > Javaで序数標識(1st、2nd、3rd)を使用して日付をフォーマットするにはどうすればよいですか?

Javaで序数標識(1st、2nd、3rd)を使用して日付をフォーマットするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-17 03:20:25
オリジナル
358 人が閲覧しました

How to Format Dates with Ordinal Indicators (1st, 2nd, 3rd) in Java?

序数標識 (th、rd) を使用した月の日付の書式設定

月の日を表示する場合、多くの場合、それを示す序数標識を含めることが望ましいです。 「1 日」、「2 日」、「3 日」など。Java の SimpleDateFormat は数値の日をフォーマットする方法を提供します。

序数インジケーターの書式設定

序数インジケーターを使用して月の日を書式設定するには、カスタム関数または外部ライブラリに依存します。このようなライブラリの 1 つが Google Guava で、getDayOfMonthSuffix と呼ばれるメソッドを提供します。

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";
    }
}
ログイン後にコピー

この例では、getDayOfMonthSuffix は月内の日を入力として受け取り、対応する序数インジケーターを返します。日が "11"、"12"、または "13" で終わる特殊なケースを処理して、"st"、"nd"、または "rd" の代わりに "th" を返します。

このメソッドの使用方法、序数インジケーターを使用して月の日付を書式設定できるようになりました。

SimpleDateFormat sdf = new SimpleDateFormat("MMMMM d");
int dayOfMonth = 21;
String formattedDate = sdf.format(new Date()) + getDayOfMonthSuffix(dayOfMonth);
System.out.println(formattedDate); // prints "January 21st"
ログイン後にコピー

潜在的なバグへの対処

次の点に注意してください。序数インジケーターを使用して月の日付を書式設定するときは、特殊なケースや特殊な状況を考慮することが重要です。たとえば、質問で言及されているテーブルには、「7tn」、「17tn」、および「27tn」で終わる日のエラーが含まれています。このようなバグを回避するには、堅牢なカスタム コードを使用するか、十分にテストされたライブラリを利用することをお勧めします。

以上がJavaで序数標識(1st、2nd、3rd)を使用して日付をフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート