使用traling零填充DateTimeFormatter

时间:2015-11-03 08:59:11

标签: java datetime padding date-formatting zero-pad

我正在创建一个应用程序,用户在日历中选择一个日期和时间,然后应该在文本字段中显示为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,但是如果有一些课程在那里扩展它,我想使用它也没关系。虽然我宁愿避免添加其他依赖项。

2 个答案:

答案 0 :(得分:1)

DateTimeFormatterBuilderappendPattern方法

一起使用
  

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'")