Java Instant to LocalDateTime尾随零

Tro*_*935 2 java instant java-8 spring-boot

我使用Spring Boot在Java中将Instant转换为LocalDateTime,如下所示

LocalDateTime.ofInstant(timeInUtc, zoneId);
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我得到了一个Regex来检查我的资源是否返回带有LocalDateTime的Json.Regex期望以下格式的JSON值:

 2018-11-15T08:38:49.382
Run Code Online (Sandbox Code Playgroud)

但它似乎删除了尾随零,意味着代替

2018-11-15T08:38:49.380
Run Code Online (Sandbox Code Playgroud)

我得到的是符合正则表达式的

 2018-11-15T08:38:49.38
Run Code Online (Sandbox Code Playgroud)

如何确保不删除尾随零?

提前致谢!

sec*_*tar 6

格式化日期将有助于保留尾随零

DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

2018-11-15T08:03:45.580

代码如下:

public class Post2 {

    public static void main(String[] args) {

        String date = LocalDateTime.ofInstant(Instant.now(), ZoneId.of("UTC"))
           .format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"));
        System.out.println(date);

    }
}
Run Code Online (Sandbox Code Playgroud)

编辑 添加正则表达式匹配以匹配具有和不具有毫秒的日期时间.

        String regex = "^\\d\\d\\d\\d-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])(\\.{0,1}[0-9]{1,3})$";

        String str1 = "2015-1-11 13:57:24";

        String str2 = "2015-1-11 13:57:24.0";
        String str3 = "2015-1-11 13:57:24.00";
        String str4 = "2015-1-11 13:57:24.000";
        String str5 = "2015-1-11 13:57:24.1";
        String str6 = "2015-1-11 13:57:24.12";
        String str7 = "2015-1-11 13:57:24.1222";
        String str8 = "2015-1-11 13:57:24.02";

        System.out.println( str1.matches(regex));
        System.out.println(str2.matches(regex));
        System.out.println(str3.matches(regex));
        System.out.println(str4.matches(regex));
        System.out.println(str5.matches(regex));
        System.out.println(str6.matches(regex));
        System.out.println(str7.matches(regex));
        System.out.println(str8.matches(regex));
Run Code Online (Sandbox Code Playgroud)

输出:

true
true
true
true
true
true
false
true
Run Code Online (Sandbox Code Playgroud)