使用序數指示器格式化一月中的某一天(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”後綴。對於其他日期,它使用模運算 (%) 檢查當天的最後一位數字:
用法範例
要使用此函數,只需傳遞一天當月作為參數。例如:
int dayOfMonth = 11; String ordinalIndicator = getDayOfMonthSuffix(dayOfMonth); // "th"
結論
將序數指示符附加到月份中的某一天是日期格式中的常見要求,並且使用Guava 庫提供了一個簡單的方法和有效的解決方案。這個改進的程式碼片段消除了原始答案中提到的潛在錯誤,並確保將正確的序數指示符附加到該月從 1 到 31 的任何一天。
以上是如何在 Java 中有效地將序數指示符(st、nd、rd、th)添加到月份中的日期數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!