web-dev-qa-db-fra.com

Conversion de chaîne en date à l'aide de Java8

J'essaie de convertir une chaîne à ce jour en utilisant Java 8 dans un certain format. Ci-dessous mon code. Même après avoir mentionné le modèle de format comme MM/jj/aaaa, la sortie que je reçois est aaaa/Format DD/MM. Quelqu'un peut-il signaler ce que je fais mal?

    String str = "01/01/2015";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
    LocalDate dateTime = LocalDate.parse(str, formatter);
    System.out.println(dateTime);
10
user3509208

C'est parce que vous utilisez la méthode toString qui stipule que:

La sortie sera au format ISO-8601 uuuu-MM-dd.

Le DateTimeFormatter que vous avez transmis à LocalDate.parse est utilisé uniquement pour créer un LocalDate, mais il n'est pas "attaché" à l'instance créée. Vous devrez utiliser LocalDate.format méthode comme ceci:

String str = "01/01/2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
LocalDate dateTime = LocalDate.parse(str, formatter);
System.out.println(dateTime.format(formatter)); // not using toString
7
marcospereira

LocalDate est un objet Date. Ce n'est pas un objet String, donc le format dans lequel il affichera la chaîne de sortie de date dépendra de l'implémentation de toString.

Vous l'avez converti correctement en objet LocalDate mais si vous souhaitez afficher l'objet date dans un format de chaîne particulier, vous devez le formater en conséquence:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
System.out.println(dateTime.format(formatter))

De cette façon, vous pouvez convertir la date au format de chaîne de votre choix en fournissant un formateur.

2
Ankit Bansal

Vous pouvez utiliser la classe SimpleDateFormat à cet effet. Initialiser SimpleDateFormat objet avec le format de date que vous souhaitez comme paramètre.

String dateInString = "27/02/2016"
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse(dateInString);
2
Zoka