我正在创建一个应用程序,用户在日历中选择一个日期和时间,然后应该在文本字段中显示为26位数,用尾随零填充日期。
因此日期应按以下格式显示:
yyyyMMddHHmmssSSS000000000
因此,在毫秒(SSS)之后,我想用9个零填充字符串。问题是如果不在模式字母和零常量之间添加空格,这似乎是不可能的。
有趣的是,如果我DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS000000000")
我得到DateTimeParseException
,但字符串实际上是在文本字段中按需要格式化的。问题是,当使用try-catch块围绕DateTimeFormatter
的实例化时,Eclipse会告诉我Unreachable catch block for DateTimeParseException. This exception is never thrown from the try statement body
,因为异常会在某个依赖类中抛出到我的文本字段。此外,捕获每次执行代码时都会抛出的错误似乎是不好的做法。
DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS 000000000")
确实编译。但我真的需要它是一个没有任何空格的字符串。
这可能吗?我目前正在使用java.time.format.DateTimeFormatter
,但是如果有一些课程在那里扩展它,我想使用它也没关系。虽然我宁愿避免添加其他依赖项。
答案 0 :(得分:1)
将DateTimeFormatterBuilder与appendPattern方法
一起使用public DateTimeFormatterBuilder appendPattern(String pattern)
将指定模式定义的元素追加到构建器。
所有字母' A'到了' Z'和' a'到' z'保留为模式字母。字符'#',' {'和'}'留作将来使用。人物' ['和']'表示可选模式。
你可以像这样使用它:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
public class TimeFormatteTest {
public static void main(String[] args){
DateTimeFormatterBuilder dtfb = new DateTimeFormatterBuilder();
dtfb.append(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
dtfb.appendPattern("000000000");
DateTimeFormatter dtf = dtfb.toFormatter();
System.out.println(dtf.format(LocalDateTime.now()));
}
}
输出格式为:
20151104003532968000000000
答案 1 :(得分:1)
使用DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS'000000000'")