I would to add day number ordinal suffixs 26th, or 1st, or 2nd.

How can I do this in JSF using <f:convertDateTime>? I have tried using pattern attribute with dd, however this only prints the whole number without any ordinal suffix.

有帮助吗?

解决方案

Unfortunately, this isn't supported by SimpleDateFormat which is being used under the covers by <f:convertDateTime>.

You'd need to write a custom EL function for this. Such a function could look like this:

public static String getDayWithSuffix(Date date) {
    if (date == null) {
        return null;
    }

    int day = Integer.valueOf(new SimpleDateFormat("d").format(date));

    if (day / 10 == 1) {
        return day + "th";
    }

    switch (day % 10) {
        case 1: return day + "st";
        case 2: return day + "nd";
        case 3: return day + "rd";
        default: return day + "th";
    }
}

And be used like this:

#{my:getDayWithSuffix(bean.date)}

For remainder, like month of year, just use another output with <f:convertDateTime> the usual way.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top