8
votes

Comment formater personnalisé un filétime

donné un filétime de filétime code>, comment peut-il être formaté d'une manière personnalisée à une chaîne?

string s = filétime.tostring () code> le fournit en iso Format uniquement. P>

String s = DateTimeFormatter.ofPattern("uuuu-MMM-dd HH:mm:ss")
                              .format(fileTime.toInstant());


5 commentaires

Voulez-vous dire aaaa au lieu de uuuu


@Kal j'ai essayé les deux. Yyyy Juste Jette Champ non pris en charge: Année d'ère au lieu de champ non pris en charge: année .


Avez-vous essayé tomillis au lieu de tonstant ? Mise en forme d'un instantané nécessite des fuseaux horaires.


@Kal j'ai essayé Ce . Comment procéder avec le résultat de Tomillis ?


Ah oui. Je pense que votre meilleur pari est de joindre le fuseau horaire à DateTimeformatter - Stackoverflow .com / questions / 25229124 / Format-Instant-to-Strin g


5 Réponses :


4
votes

Vous ne pouvez pas formater un instant à l'aide d'un DateTimeformatter Instance Interrogation de l'année.

Un Instant représente un point unique sur la ligne horaire. C'est pourquoi il n'est pas possible de donner une réponse correcte / unique à la question «Quelle est l'année / jour / heure?». Cela dépend de l'endroit où la question est posée sur la question: à New York, il diffère de Sidney. Mais votre DateTimeformatter demande exactement cette question. Et c'est la raison pour laquelle vous obtenez un non -portedtemporaltypeeexception .

Vous devez convertir l'instance vers un localDateTime au moins: < / p> xxx


0 commentaires

1
votes

Si votre temps ressemble à ce

yyyy-MM-dd'T'HH:mm:ss


1 commentaires

Ce n'est pas ce que j'ai demandé.



2
votes

Formatage d'un Instant nécessite une zone de temps. Ceci peut être réalisé en utilisant withzone (ZoneID) : xxx


0 commentaires

6
votes

Personnellement, je trouve le message d'erreur "champ non pris en charge: année" trompeur. La cause réelle est manquante Timezone. strong> Cette information est nécessaire pour aider le formateur à convertir en interne l'instant donné à une représentation humaine. Solution: Fournissez le fuseau horaire. strong> Formatage ou analyse d'un Instant code> est pris en charge - Contrairement à la réponse de @Flo.

Impression: strong> p> xxx pré>

analyse: strong> p>

La procédure inverse - analyse - Cela ne fonctionne malheureusement pas de manière directe car le moteur de format de Java.Time Code> est conçu de telle sorte que le formateur ne renvoie qu'un code de temporalAccessor brut code> qui doit être converti au type réel requis. Exemple: P>

Instant instant =
  Instant.from(
    DateTimeFormatter.ofPattern("uuuu-MMM-dd HH:mm:ss", Locale.ENGLISH)
    .withZone(ZoneId.systemDefault())
    .parse("2015-Oct-30 15:22:32"));
System.out.println("=>" + instant); // 2015-10-30T14:22:32Z


0 commentaires

1
votes

zoneddateTetime peut analyser la chaîne par défaut que vous obtenez d'un fichier filétime.tostring (): (Fournissez votre propre «chemin» dans l'extrait de code ci-dessous)

FileTime fileTime = Files.getLastModifiedTime(path);
ZonedDateTime zonedDateTime = ZonedDateTime.parse(fileTime.toString());
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEEE, MMMM d, yyyy   HH:mm:ss");   
System.out.println(dtf.format(zonedDateTime));


0 commentaires