Conversion de chaîne Java en date – Dépassement de pile bitcoin core blockchain download

Notez l’importance de l’argument Locale explicite. Si vous l’omettez, il utilisera les paramètres régionaux par défaut qui ne sont pas nécessairement l’anglais tel qu’il est utilisé dans le nom du mois du chaîne d’entrée. Si les paramètres régionaux ne correspondent pas à chaîne d’entrée, alors vous obtiendrez une java.text.ParseException de façon confuse même si le modèle de format semble valide.

Une note importante est que SimpleDateFormat n’est pas thread-safe. En d’autres termes, vous ne devez jamais le déclarer et l’affecter en tant que variable statique ou instance, puis le réutiliser à partir de différentes méthodes / threads. Vous devriez toujours le créer tout neuf dans la portée locale de la méthode.

Si vous êtes sur Java 8 ou plus récent, utilisez DateTimeFormatter (également ici, cliquez sur le lien pour voir tous les formateurs prédéfinis et les formats de format disponibles, le tutoriel est disponible ici).


Cette nouvelle API est inspirée de JodaTime. Chaîne de caractères = "2 janvier 2010";

Remarque: si votre modèle de format contient également la partie heure, utilisez LocalDateTime # parse (texte, formatter) au lieu de LocalDate # parse (texte, formatter). Et, si votre modèle de format contient le fuseau horaire, utilisez ZonedDateTime # parse (text, formatter) à la place.

Notez qu’il a plusieurs formateurs prédéfinis pour les modèles les plus populaires. Donc, au lieu de DateTimeFormatter.ofPattern ("EEE, d MMM aaaa HH: mm: ss Z", Locale.ENGLISH) ;, vous pouvez utiliser DateTimeFormatter.RFC_1123_DATE_TIME. Cela est possible car ils sont, contrairement à SimpleDateFormat, thread sûr. Vous pouvez donc aussi définir le vôtre, si nécessaire.

Pour un particulier chaîne d’entrée format, vous n’avez pas besoin d’utiliser un DateTimeFormatter explicite: une date ISO 8601 standard, comme 2016-09-26T17: 44: 57Z, peut être analysée directement avec LocalDateTime # parse (texte) car elle utilise déjà le formateur ISO_LOCAL_DATE_TIME. De même, LocalDate # parse (texte) analyse une date ISO sans le composant time (voir ISO_LOCAL_DATE) et ZonedDateTime # parse (texte) analyse une date ISO avec un décalage et fuseau horaire ajouté (voir ISO_ZONED_DATE_TIME).

Le début d’une journée dépend du fuseau horaire. Si vous ne spécifiez pas de fuseau horaire, les paramètres par défaut de la machine virtuelle Java fuseau horaire est appliqué. Cela signifie que le comportement de votre code peut changer lorsqu’il est exécuté sur d’autres ordinateurs ou avec un fuseau horaire réglage. Probablement pas ce que tu veux.

Le langage Locale spécifie comment interpréter les mots (nom du mois et du jour) rencontrés lors de l’analyse. (La réponse de BalusC gère cela correctement.) En outre, l’environnement local affecte la sortie de certains formateurs lors de la génération d’une représentation sous forme de chaîne de votre date-heure.

Notez dans l’exemple de code ci-dessous comment nous passons un objet de fuseau horaire au formateur qui analyse la chaîne. Ce fuseau horaire est utilisé pour interpréter cette date-heure comme ayant eu lieu dans ce fuseau horaire. Vous devez donc réfléchir et déterminer le fuseau horaire représenté par cette entrée de chaîne.

Puisque vous n’avez pas de portion de temps dans votre chaîne d’entrée, Joda-Time assigne le premier moment du jour du jour spécifié fuseau horaire comme l’heure de la journée. Habituellement, cela signifie 00:00:00 mais pas toujours, en raison de l’heure d’été (DST) ou d’autres anomalies. En passant, vous pouvez faire la même chose avec n’importe quelle instance de DateTime en appelant withTimeAtStartOfDay. Formatter Format

Nous utilisons généralement les classes immuables dans Joda-Time. Plutôt que de modifier un objet date-heure existant, nous appelons des méthodes qui créent une nouvelle instance basée sur l’autre objet avec la plupart des aspects copiés sauf si des modifications étaient souhaitées. Un exemple est l’appel à withZone dans la dernière ligne ci-dessous. L’immutabilité permet de rendre Joda-Time très sûr pour les threads, et peut également rendre certains travaux plus clairs. Conversion