Ven, 03 nov 2017 09:12:46 c'est mon format de date et je veux l'analyser en utilisant SimpleDateFormat () en java
3 réponses
Essaye ça:
DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
Date date = df.parse("Fri, 03 Nov 2017 09:12:46");
System.out.println(date);
Tl; dr
LocalDateTime.parse(
"Fri, 03 Nov 2017 09:12:46" ,
DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss", Locale.US )
)
Java.time
L'approche moderne utilise les classes java.time qui remplacent les anciennes classes de date-heure gênantes fournies avec les premières versions de Java. Évitez SimpleDateFormat
et autres.
Votre entrée ne contient aucun indicateur de décalage par rapport à UTC ou de fuseau horaire. Nous analysons donc comme un LocalDateTime
.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss", Locale.US ) ;
LocalDateTime ldt = LocalDateTime.parse( "Fri, 03 Nov 2017 09:12:46" , f ) ;
Une fois, j'ai eu la tâche d'écrire une fonctionnalité qui serait capable d'analyser une chaîne de date à une date sans connaître le format à l'avance. En d'autres termes, une chaîne doit être reconnue comme une date si c'est une date valide et analysée à ce jour quel que soit le format dans lequel elle est fournie. La solution que j'ai trouvée était donc d'avoir un fichier de configuration contenant tous les formats de date que je supporte. Je les lis un par un et j'essaye d'analyser la chaîne avec ce format. Si ça marche alors super, j'arrête depuis que j'ai eu mon résultat sinon je continue jusqu'au bout. Si tout le format échoue, la chaîne n'est pas une date ou est dans un format non pris en charge. Bien sûr, l'ajout (et la suppression) de formats pris en charge ne nécessitent pas de modification de code puisqu'il s'agit de mon fichier de configuration. L'ordre des formats est également important puisque de cette façon je peux contrôler si je préfère les formats américains au style européen ou vice-versa. J'ai écrit un article qui décrit l'idée plus en détail. Voici le lien: Package Java 8 java.time: analyse de n'importe quelle chaîne à ce jour. Le titre dit que c'est pour java 8, mais l'idée générale est également applicable aux versions antérieures.
Questions connexes
De nouvelles questions
java
Java est un langage de programmation de haut niveau. Utilisez cette balise lorsque vous rencontrez des problèmes pour utiliser ou comprendre la langue elle-même. Cette balise est rarement utilisée seule et est le plus souvent utilisée en conjonction avec [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] et [maven].