Comment Convertir FileTime à Chaîne avec DateFormat
Je suis en train d'essayer de convertir le creationTime attribut d'un fichier dans une chaîne de caractères avec un format de date MM/jj/aaaa. Je suis à l'aide de Java nio pour obtenir le creationTime attribut, qui est de FileTime
type, mais je veux juste la date à partir de cette FileTime
comme une chaîne de caractères avec le format de la date spécifié précédemment. Jusqu'à présent j'ai ...
String file = "C:\\foobar\\example.docx";
Path filepath = Paths.get(file);
BasicFileAttributes attr = Files.readAttributes(filepath,BasicFileAttributes.class);
FileTime date = attr.creationTime();
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String dateCreated = df.format(date);
Cependant, il déclenche une exception en disant qu'il est impossible de formater la FileTime date
objet comme une Date. FileTime semble sortie en forme de 2015-01-30T17:30:57.081839Z
par exemple. Quelle est la solution que recommanderiez-vous pour résoudre ce? Devrais-je utiliser des regex sur cette sortie ou est-il une solution plus élégante?
OriginalL'auteur user2150250 | 2015-02-03
Vous devez vous connecter pour publier un commentaire.
Juste obtenir le nombre de millisecondes depuis l'époque de la
FileTime
.OriginalL'auteur Sotirios Delimanolis
Convertir FileTime à millis par
toMillis()
méthode.Utiliser ce code pour obtenir la valeur mise en forme.
OriginalL'auteur Selvaraj
Dans Java 8, vous pouvez convertir le
FileTime
enZonedDateTime
avant la mise en forme:qui imprime:
toMillis()
et puisInstant.ofEpochMillis()
vous pouvez simplement utilisertoInstant()
de laFileTime
classe.J'ai d'abord proposé
FileTime#toInstant()
trop, mais ensuite il y a un bug, j'ai donc changé dans cette révision. Mais je ne me souviens pas de la raison...plusMais vous ne le lâche précision (si FileTime a une précision à la nanoseconde) lors de la conversion en millisecondes. Vraiment, je serais intéressée ce genre de bug, il y avait...
et @Mi@MincongHuang
dateTimeFormatter.format(fileTime.toInstant())
throws exceptionjava.time.temporal.UnsupportedTemporalTypeException: Unsupported field: Year
Si vous voulez formater un
Instant
vous devez fournir un Fuseau horaire, sinon le formateur ne peut pas décider de la façon de rendre l'information:dateTimeFormatter.format(fileTime.toInstant().atZone(ZoneOffset.UTC)))
OriginalL'auteur Mincong Huang
Conversion FileTime à Jour
utiliser ce code pour convertir
OriginalL'auteur adesh