一尘不染

Java如何将一个月的第11天、第21天或第23天(序数指示符)格式化?

java

我知道这会给我这个月的一天,一个数(11,21,23):

SimpleDateFormat formatDayOfMonth = new SimpleDateFormat("d");

但你如何格式化月份的一天,包括序数指标,比方说11th21st还是23rd


阅读 379

收藏
2020-02-27

共1个答案

一尘不染

// https://github.com/google/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";
    }
}

@kaliatech的表很不错,但是由于重复了相同的信息,因此很容易出现错误。这样的错误实际上在表中存在7tn,17tn27tn(随着时间的推移,由于StackOverflow上的流体性质,所以检查这个错误可能会固定在答案的版本历史,看看错误)。

2020-02-27