1

我正在尝试创建一个 Joda 2.2DateTimeFormatter来重构我的代码。我试图重现的行为是

private String getSemesterLabel() {
    StringBuilder sb = new StringBuilder(date.toString("yyyy"));
    if (date.getMonthOfYear() < 7) {
        sb.insert(0, "first semester ");
    } else {
        sb.insert(0, "second semester ");
    }
    return sb.toString();
}

获得DateTimeFormatter封装上述行为的最简单方法是什么?

4

1 回答 1

2

您无法使用内置模式符号打印学期信息(请参阅错误报告中的类似问题)。你有两个选择:

  1. 从头开始构建逻辑

    您可以DateTimeFormatter使用DateTimeFormat类中的静态方法生成实例:

    DateTimeFormatter format = DateTimeFormat.forPattern("yyyy");
    

    DateTime您还可以通过调用以下方式从 Joda 检索一年中的月份:

    myDateTime.monthOfYear().get();
    


  2. 用于DateTimeFormatterBuilder构造格式化程序

    另一种方法可能是用于DateTimeFormatterBuilder构建DateTimeFormatter显示您喜欢的文本的自定义。就像是:

    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
    builder.append(DateTimeFormat.forPattern("yyyy"));
    builder.appendLiteral(' ');
    builder.append(new SemesterPrinter());
    return builder.toFormatter();
    

    SemesterPrinter需要在哪里实施DateTimePrinter并负责生成文本first semestersecond semester根据提供的日期信息..

于 2013-04-23T16:20:52.830 回答