2 votes

Java Instant à LocalDateTime zéro final

Je ai converti un Instant en LocalDateTime en Java avec Spring Boot comme indiqué ci-dessous

LocalDateTime.ofInstant(timeInUtc, zoneId);

Dans mon test, j'ai obtenu un Regex pour vérifier si ma ressource renvoie un Json avec un LocalDateTime. Le Regex s'attend à une valeur JSON au format:

 2018-11-15T08:38:49.382

Mais il semble que le zéro final soit supprimé, ce qui signifie au lieu de

2018-11-15T08:38:49.380

qui serait conforme au regex, je reçois

 2018-11-15T08:38:49.38

Comment puis-je m'assurer que le zéro final ne soit pas supprimé?

Merci d'avance!

7voto

secret super star Points 1090

La mise en forme de la date permettrait de conserver le zéro final

DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")

La sortie ressemble à ceci:

2018-11-15T08:03:45.580

Le code ci-dessous:

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);

    }
}

EDIT Ajout de la correspondance regex pour matcher la date et l'heure avec et sans millisecondes.

        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));

sortie:

true
true
true
true
true
true
false
true

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X