Java 程控Joda时间格式化程序
我试图创建一个Joda2.2Java 程控Joda时间格式化程序,java,jodatime,Java,Jodatime,我试图创建一个Joda2.2DateTimeFormatter来重构我的代码。我试图复制的行为是 private String getSemesterLabel() { StringBuilder sb = new StringBuilder(date.toString("yyyy")); if (date.getMonthOfYear() < 7) { sb.insert(0, "first semester "); } else {
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();
}
私有字符串getSemesterLabel(){
StringBuilder sb=新的StringBuilder(日期:toString(“yyyy”);
if(date.getMonthOfYear()<7){
sb.插入(0,“第一学期”);
}否则{
sb.插入(0,“第二学期”);
}
使某人返回字符串();
}
获取封装上述行为的
DateTimeFormatter
的最简单方法是什么?您不能使用内置模式符号打印学期信息(请参见此)。您有两个选择:
DateTimeFormat
类中的静态方法生成DateTimeFormatter
实例:
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy");
您还可以通过调用以下命令从JodaDateTime
检索一年中的月份:
myDateTime.monthOfYear().get();
DateTimeFormatterBuilder
构造格式化程序
另一种方法可能是构造一个显示首选文本的自定义DateTimeFormatter
。比如:
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
builder.append(DateTimeFormat.forPattern("yyyy"));
builder.appendLiteral(' ');
builder.append(new SemesterPrinter());
return builder.toFormatter();
其中,SemesterPrinter
需要实施,并负责根据提供的日期信息生成第一学期的文本或第二学期的文本我发现你的评论和否决票相当轻率,因为我已经阅读了全部文档,但找不到任何相关内容。到目前为止,我找到的唯一方法是从头创建一个完整的DateTimeFormatter,这太多了,不值得重构。因为我不知道该怎么做(这说明我看不到我能提供的任何细节)并不意味着这个问题是不合法的。我想我完全误解了你的问题。你希望找一个能理解学期概念的老师吗?我不知道你说的“单身”是什么意思。我正在尝试创建一个
DateTimeFormatter
对象,该对象将封装上述代码中描述的业务行为。我不认为答案像模式(字符串)的日期时间格式那样简单。如果你错投了反对票。我希望你能投反对票。谢谢,我明白了。我想我的答案现在定义了两种方法。我已经取消了我的否决票,因为你的附加评论现在已经更详细地解释了你的背景。好吧,我看不出这将如何打印“第一学期”或“第二学期”。。。只印刷年份是(非常)容易的部分…@LudovicPénet啊,转念一想,我可能误解了这个问题。我已经编辑了我的答案。我担心我真的必须从头开始构建DateTimePrinter。。。