2015-11-03 2 views
1

Je crée une application dans laquelle l'utilisateur choisit une date et une heure dans un calendrier qui doit ensuite être affiché dans un champ de texte à 26 chiffres, en complétant la date par des zéros de fin.Pad DateTimeFormatter avec des zéros de traling

Ainsi, la date doit être affichée dans le format suivant:

yyyyMMddHHmmssSSS000000000

Ainsi, après milliseconde (SSS) Je veux remplir la chaîne avec 9 zéros. Le problème est que cela ne semble pas possible sans ajouter un espace entre les lettres du motif et les constantes nulles.

La chose amusante est que si je fais DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS000000000") je reçois un DateTimeParseException, mais la chaîne est réellement formatée comme souhaité dans le champ de texte. Le problème est que lorsque j'entoure l'instanciation de DateTimeFormatter avec un bloc try-catch, Eclipse me dit Unreachable catch block for DateTimeParseException. This exception is never thrown from the try statement body car l'exception est renvoyée dans une classe de dépendance à mon champ de texte. De plus, il semble que ce soit une mauvaise pratique d'attraper une erreur qui sera lancée à chaque fois que le code est exécuté.

DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS 000000000") compile. Mais j'ai vraiment besoin que ce soit une chaîne sans aucun espace.

Est-ce possible? J'utilise actuellement java.time.format.DateTimeFormatter, mais s'il y a de la classe là-bas, j'imagine que l'utiliser serait bien aussi. Bien que je préférerais éviter d'ajouter des dépendances supplémentaires.

+0

Eh bien, je viens de réaliser que quelque chose d'autre donnait moi l'exception. J'ai essayé 'DateTimeFormatter.ofPattern (" yyyyMMddHHmmssSSS'000000000 '")' mais puisque l'exception est restée j'ai rejeté cette tentative. Je vais juste marquer @ Ken Geis comme la bonne réponse. –

Répondre

1

Utilisez DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS'000000000'")

1

Utilisez le DateTimeFormatterBuilder un avec la méthode appendPattern

publique DateTimeFormatterBuilder appendPattern (pattern String)

ajoute les éléments définis par le motif spécifié au constructeur.

Toutes les lettres «A» à «Z» et «a» à «z» sont réservées en tant que lettres de motif. Les caractères '#', '{' et '}' sont réservés pour une utilisation future. Les caractères '[' et ']' indiquent des motifs optionnels.

Vous pouvez l'utiliser comme ceci:

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

La sortie sera sous la forme:

20151104003532968000000000