Неверный формат даты при записи в CSV через Java - PullRequest
0 голосов
/ 20 марта 2019

Итак, у меня есть метод, который записывает некоторые из списка объектов в CSV.

private void writeToCSV(List<Employee> empList) {
    try(BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream(System.getProperty("java.io.tmpdir")+"Test.csv"), "UTF-8"))) {
        empList.forEach(eachEmployee -> {
            StringBuilder builder = new StringBuilder();
            builder.append(eachEmployee.getName());
            builder.append(CSV_SEPARATOR);
            builder.append(eachEmployee.getID());
            builder.append(CSV_SEPARATOR);
            builder.append(eachEmployee.getJoiningDate());
            writer.write(builder.toString());
            writer.newLine();
        });
    }
}

Здесь Дата присоединения сотрудника в формате 2019/03/20, т. Е. Гггг / мм/ формат дд.И я должен написать это в том же формате для CSV.Но когда я проверяю CSV, он находится в формате 20.03.2009, т.е. в формате MM / dd / yyyy.Любая идея о том, где я иду не так?

Редактировать: Дата присоединения является типом строки

1 Ответ

0 голосов
/ 20 марта 2019

Locale

Текущее значение по умолчанию для JVM Locale, вероятно, применяется неявно при создании текста для представления значения даты.Я могу только догадываться, потому что вы забыли объяснить, что делает вызываемый метод и каков тип данных его возвращаемого значения.

java.time

Вероятно, ваш код использует трагически ошибочные классы даты и времени, которые были вытеснены годы назад java.time классы с принятием JSR 310.

Конечным решением было бы принятие классов java.time в вашем коде.

ISO 8601

И научитесь использовать стандартные форматы ISO 8601 при сериализации значений даты и времени в виде текста.Для дат в формате ГГГГ-ММ-ДД.Классы java.time по умолчанию используют форматы ISO 8601 при генерации / разборе строк.

...