首頁 > Java > java教程 > 如何在 Java 中有效地將序數指示符(st、nd、rd、th)添加到月份中的日期數字?

如何在 Java 中有效地將序數指示符(st、nd、rd、th)添加到月份中的日期數字?

Patricia Arquette
發布: 2024-12-20 12:16:12
原創
177 人瀏覽過

How to Efficiently Add Ordinal Indicators (st, nd, rd, th) to Day-of-Month Numbers in Java?

使用序數指示器格式化一月中的某一天(11 日、21 日、23 日)

在處理日期時,通常需要輸出帶有序數指示符的月份中的某一天,例如“11th”、“21st”或“23號”。雖然簡單地使用月份中的數字日期就足夠了,但添加序數指示符可以增強日期的清晰度和可讀性。

提供的 Java 片段可以使用 SimpleDateFormat 將月份中的日期提取為數字,但是如何我們是否要格式化此數字以包含適當的序數指示符?

使用番石榴的解決方案庫

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 之間的有效值(包含 1 和 31)。

對於 11 日到 13 日之間的日子,函數會傳回“th”,因為這些天總是使用“th”後綴。對於其他日期,它使用模運算 (%) 檢查當天的最後一位數字:

  • 如果最後一位數字為 1,則傳回「st」。
  • 如果最後一位是 2,則回傳「nd」。
  • 如果最後一位是 3,則回傳"rd"。
  • 否則回傳"th"。

用法範例

要使用此函數,只需傳遞一天當月作為參數。例如:

int dayOfMonth = 11;
String ordinalIndicator = getDayOfMonthSuffix(dayOfMonth); // "th"
登入後複製

結論

將序數指示符附加到月份中的某一天是日期格式中的常見要求,並且使用Guava 庫提供了一個簡單的方法和有效的解決方案。這個改進的程式碼片段消除了原始答案中提到的潛在錯誤,並確保將正確的序數指示符附加到該月從 1 到 31 的任何一天。

以上是如何在 Java 中有效地將序數指示符(st、nd、rd、th)添加到月份中的日期數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板