我正在尝试创建 Joda 2.2 DateTimeFormatter
来重构我的代码。我试图重现的行为是
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
的最简单方法是什么?
最佳答案
您无法使用内置模式符号打印学期信息(请参阅此 similar issue in a bug report )。您有两个选择:
从头开始构建逻辑
您可以使用
DateTimeFormat
类中的静态方法生成DateTimeFormatter
实例:DateTimeFormatter format = DateTimeFormat.forPattern("yyyy");
您还可以通过调用以下方法从 Joda
DateTime
检索一年中的月份:myDateTime.monthOfYear().get();
使用
DateTimeFormatterBuilder
构造格式化程序另一种选择可能是使用
DateTimeFormatterBuilder
构造一个显示您首选文本的自定义DateTimeFormatter
。像这样的东西:DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); builder.append(DateTimeFormat.forPattern("yyyy")); builder.appendLiteral(' '); builder.append(new SemesterPrinter()); return builder.toFormatter();
其中
SemesterPrinter
需要实现DateTimePrinter
并负责根据提供的日期信息生成文本第一学期
或第二学期
。
关于java - 程序化 Joda 时间格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16172568/