使用f:convertDateTime添加st,nd和th等天数序数后缀

时间:2013-09-12 07:20:43

标签: jsf date numbers converter ordinal

我想添加第26天,第1天或第2天的天数序号后缀。

如何使用<f:convertDateTime>在JSF中执行此操作?我尝试将pattern属性与dd一起使用,但是这只打印整个数字而没有任何序数后缀。

1 个答案:

答案 0 :(得分:1)

不幸的是SimpleDateFormat不支持<f:convertDateTime>封面使用此功能。

你需要为此写一个custom EL function。这样的功能可能如下所示:

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";
    }
}

可以像这样使用:

#{my:getDayWithSuffix(bean.date)}

对于剩余部分,如同一年中的月份,只需使用<f:convertDateTime>常规方式的其他输出。