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 Réponses :
Vous ne pouvez pas formater un instant à l'aide d'un Un Vous devez convertir l'instance DateTimeformatter code> Instance Interrogation de l'année.
Instant code> 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 code>. P>
code> vers un
localDateTime code> au moins: < / p>
Si votre temps ressemble à ce
yyyy-MM-dd'T'HH:mm:ss
Ce n'est pas ce que j'ai demandé.
Formatage d'un Instant code> nécessite une zone de temps. Ceci peut être réalisé en utilisant
withzone (ZoneID) code>:
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 Impression: strong> p> analyse: strong> p> La procédure inverse - analyse - Cela ne fonctionne malheureusement pas de manière directe car le moteur de format de Instant code> est pris en charge - Contrairement à la réponse de @Flo.
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
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));
Voulez-vous dire
aaaa code> au lieu de
uuuu code>
@Kal j'ai essayé les deux.
Yyyy Code> Juste Jette
Champ non pris en charge: Année d'ère Code> au lieu de
champ non pris en charge: année code>.
Avez-vous essayé
tomillis code> au lieu de
tonstant code>? Mise en forme d'un
instantané code> nécessite des fuseaux horaires.
@Kal j'ai essayé Ce a >. Comment procéder avec le résultat de
Tomillis code>?
Ah oui. Je pense que votre meilleur pari est de joindre le fuseau horaire à DateTimeformatter - Stackoverflow .com / questions / 25229124 / Format-Instant-to-Strin g