Ошибка в отображении формата данных SimpleDateFormat Java

383
03 января 2018, 19:17

добрый день помогите разобраться пожалуйста

есть вот такой кусок кода

введите сюда код public static void main(String[] args) throws IOException {
    Date newDate=null;
    SimpleDateFormat oldFormat = new SimpleDateFormat("dd/mm/yyyy", Locale.ENGLISH);
    SimpleDateFormat newFormat = new SimpleDateFormat("dd-mm-yyyy", Locale.ENGLISH); // !!!!

// ================================ add person ===============================//

    if (args[0].equals("-c")){
        try{
            Date oldDate = oldFormat.parse(args[3]); // получил дату в старом формате
            String newData = newFormat.format(oldDate); // получил строку в новом формате
            System.out.println(newData); // проверка строки
            newDate = newFormat.parse(newData); // получил дату в новом формате
        }catch (ParseException e){
            e.printStackTrace();
        }
            if (args[2].equals("м")){
                Person person = Person.createMale(args[1], newDate);
                allPeople.add(person);
                System.out.println(allPeople.indexOf(person)); // вывод индекса крайнего элемента
                System.out.println(newFormat.format(newDate)); // проверка формата установленной даты
            }
            else {
                Person person = Person.createFemale(args[1],newDate);
                allPeople.add(person);
                System.out.println(allPeople.indexOf(person)); // вывод индекса крайнего элемента
            }
    }`

если формат вот такой, SimpleDateFormat newFormat = new SimpleDateFormat("dd-mm-yyyy", Locale.ENGLISH); // !!!!

то вывод на всех проверках как и положено

15-04-1990

а если написать вот так "dd-MMM-yyyy" то вывод

15-Jan-1990

в чем тут дело?

Answer 1

Ну так вы неправильно задаете этот самый паттерн, о котором я говорю. Вы делаете так "dd/mm/yyyy", нужно делать так "dd/MM/yyyy". Месяцы указываются в паттерне большими буквами, потому как есть еще минуты которые указываюся именно так маленькими буквами, что четко указано в официальной документации: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html Вы изначально парсите неправильную дату, а при попытке вывести неправильную дату в правильном формате получаете указанный бред.

А вообще, если вы используете Java 1.8, то замените это позорище в виде класса Date на LocalDate, таким образом, избавитесь от многих проблем.

READ ALSO
AccessDeniedException

AccessDeniedException

Существует следующая строка кода:

355
Поиск и добавление элементов из Map в List(Stream API java8)

Поиск и добавление элементов из Map в List(Stream API java8)

У меня есть Map<String, Item>, где Item - это сущности, которые мне нужно собрать в отдельный List<Item>Собрать нужные Item я пытаюсь в методе formOrders:

429
Обращение одного jFrame к элиментам другого jFrame

Обращение одного jFrame к элиментам другого jFrame

Здравствуйте, есть ли возможность обращаться с одного jFrame к элементам другого jFrame?

293
Загрузка фото VK API. Java

Загрузка фото VK API. Java

Работаю в Android StudioС помощью моей программы можно опубликовать пост в сообществе ВК

422