J'ai une variable LocalDate appelée date, quand je l'imprime, elle affiche 1988-05-05 Je dois la convertir pour qu'elle soit imprimée comme 05.May 1988.Comment faire cela?
J'ai une variable LocalDate appelée date, quand je l'imprime, elle affiche 1988-05-05 Je dois la convertir pour qu'elle soit imprimée comme 05.May 1988.Comment faire cela?
Réponses:
SimpleDateFormat ne fonctionnera pas s'il démarre avec LocalDate qui est nouveau dans Java 8. D'après ce que je peux voir, vous devrez utiliser DateTimeFormatter, http://docs.oracle.com/javase/8/docs/api/java/ heure / format / DateTimeFormatter.html .
LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);
Cela devrait imprimer le 5 mai 1988. Pour obtenir la période après le jour et avant le mois, vous devrez peut-être utiliser "jj'.LLLL aaaa"
Avec l'aide des messages de ProgrammersBlock, j'ai trouvé ceci. Mes besoins étaient légèrement différents. J'avais besoin de prendre une chaîne et de la renvoyer en tant qu'objet LocalDate. J'ai reçu du code qui utilisait l'ancien Calendar et SimpleDateFormat. Je voulais le rendre un peu plus actuel. C'est ce que j'ai proposé.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
void ExampleFormatDate() {
LocalDate formattedDate = null; //Declare LocalDate variable to receive the formatted date.
DateTimeFormatter dateTimeFormatter; //Declare date formatter
String rawDate = "2000-01-01"; //Test string that holds a date to format and parse.
dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE;
//formattedDate.parse(String string) wraps the String.format(String string, DateTimeFormatter format) method.
//First, the rawDate string is formatted according to DateTimeFormatter. Second, that formatted string is parsed into
//the LocalDate formattedDate object.
formattedDate = formattedDate.parse(String.format(rawDate, dateTimeFormatter));
}
J'espère que cela aidera quelqu'un, si quelqu'un voit une meilleure façon de faire cette tâche, veuillez ajouter votre contribution.
LocalDate.parse(rawDate)
! String.format
est utilisé sous une forme totalement incorrecte ici, renvoyant en fait simplement la première chaîne; le DateTimeFormatter
n'est pas du tout utilisé; parse
est une static
méthode de LocalDate
; formattedDate
n'est pas une date formatée, pas même une String
(comme demandé en question)
Il existe un moyen intégré de formater LocalDate pour joda lib
import org.joda.time.LocalDate;
LocalDate localDate = LocalDate.now();
String dateFormat = "MM/dd/yyyy";
localDate.toString(dateFormat);
Si vous ne l'avez pas déjà, ajoutez ceci au build.gradle:
implementation 'joda-time:joda-time:2.9.5'
Bon codage! :)
Une bonne façon de faire cela est d'utiliser SimpleDateFormat
je vais vous montrer comment:
SimpleDateFormat sdf = new SimpleDateFormat("d MMMM YYYY");
Date d = new Date();
sdf.format(d);
Je vois que vous avez la date dans une variable:
sdf.format(variable_name);
À votre santé.
LocalDate
instance dans un format spécifique. Comment pourrait l' SimpleDateFormat
aider ici?
String
art.