Строка Дата в LocalDate преобразование - PullRequest
0 голосов
/ 20 марта 2020

Мое приложение предоставляет формат даты, и я пытаюсь преобразовать эту строку в LocalDate. Вот мой код

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateStringUtil {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm");
        //SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
        String date ="26 Aug 2019 09:46:09,469";
        LocalDate ld = LocalDate.parse(date, dtf);


    }

}

Я получаю ошибку. Есть идеи как это решить.

Exception in thread "main" java.time.format.DateTimeParseException: Text '26 Aug 2019 09:46:09,469' could not be parsed at index 2
at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source)
at java.time.format.DateTimeFormatter.parse(Unknown Source)
at java.time.LocalDate.parse(Unknown Source)
at src.DateStringUtil.main(DateStringUtil.java:24)

Ответы [ 2 ]

2 голосов
/ 20 марта 2020

Ваш формат даты и времени не соответствует введенной дате:

  • Ваш формат ожидает дату в шаблоне dd/MM/yyyy hh:mm: 26/08/2019 09:46.
  • Ваша строка даты является дата в шаблоне dd MMM yyyy hh:mm:ss,SSS: 26 Aug 2019 09:46:09,469

Документация Java DateTimeFormatter содержит больше информации о шаблонах, которые вы можете использовать: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

Редактировать: если вы хотите вывести локальную дату в другом формате, создайте вторую DateTimeFormatter и передайте ее методу format.

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateStringUtil {
    public static void main(String[] args) {
        DateTimeFormatter inputDtf = DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm:ss,SSS");
        String date = "26 Aug 2019 09:46:09,469";
        LocalDateTime ld = LocalDateTime.parse(date, inputDtf);

        DateTimeFormatter outputDtf = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
        String outputDate = ld.format(outputDtf);
    }
}
0 голосов
/ 20 марта 2020

Вы вводите дату должна быть того же формата, который указан в DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm");

    public static void main(String args[]) {
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm");
    //SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
    String date ="26/08/2019 09:46";
    LocalDate ld = LocalDate.parse(date, dtf);

}

Возможно, вы захотите сослаться на это Do c для форматов.

...