Какое сегодня число?

  • 12
  • Недоступна
В Java есть много инструментов, позволяющих работать со временем и датами. В этот раз будем пользоваться объектом Date и SimpleDateFormat, а задание у нас такое: пользователь должен ввести с клавиатуры дату в формате «2013-08-18», а приложение должно трансформировать введенное в форму «AUG 18, 2013».
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (190)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Sasha Motorin9 уровень, Кострома
вчера, 19:07
Помогло больше понять смысл класса SimpleDataFormat, когда увидел на одном из сайтов, что его объект назвали "formater" Чтобы не было путаницы в голове, надо понять для себя, что formater, это просто инструмент, который может представить засунутую в него дату в удобном для нас формате. А засунуть в него дату можно с помощью его метода formater.format(Date date);
Lizaveta:)13 уровень, Киев
16 июня, 20:49
Ох уж эти заглавные буквы... 😅
Romana Reyna15 уровень, Москва
7 июня, 01:55
Помогло: - вот это - https://www.javatpoint.com/java-simpledateformat - и вот это - http://tutorials.jenkov.com/java-internationalization/simpledateformat.html На выходе форматируем .toUpperCase()
Михаил Клименко14 уровень, Краснодар
29 мая, 07:42
Сначала считываем строку (тип String). Создаем переменную (тип SimpleDateFormat), в которой указываем, где в нашей, только что считанной, строке год, месяц и день. Создаем еще одну переменную (тип SimpleDateFormat), в которую записываем паттерны вывода даты на экран согласно ТЗ. Создаем переменную (тип Date), парсим введенную строку через переменную (тип SimpleDateFormat) date = nextFormat.parse(dateBefore); Выводим на экран переменную (тип Date) через новый формат вывода System.out.println(format.format(date).toUpperCase());
Plunder15 уровень, Санкт-Петербург
25 мая, 12:10
1. Буферизуем строку из консоли. На этом уровне проблем не должно возникать, но на всякий случай:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
2. Считываем дату с консоли:
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(reader.readLine());
*Создаем новую переменную класса дата и называем ее date. Присваиваем ей значение формата, указанного в скобках, и полученного из разбора консольной строки. 3. Создаем новый тип формата согласно желаниям валидатора:
SimpleDateFormat dateFormat = new SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH);
*Для лучшего усвоения материала поиграйтесь с текстом в скобочках. MM, к примеру, даст вам значение месяца в цифрах, тогда как MMMM — полное (а не сокращенное) название месяца. 4. Печатаем нашу дату в новом формате, попутно изменив регистр букв на верхний:
System.out.println(dateFormat.format(date).toUpperCase());
*Печатать(взять за базис dateFormat.изменить под базис(date).перевести в верхний регистр);
Александр Назаров18 уровень, Санкт-Петербург
26 мая, 12:33
о, спасибо, чувак, долго сидел не понимал почему у меня не работает)
Dmytro Tochylin10 уровень
18 июня, 12:11
Сильно, вот эта пасиба, пусть даже это полное решение, но оно того стоит )
Sergey Bakishev10 уровень, Москва
15 мая, 19:22
Из за того, что ввел название месяца прописными буквами-решил с 4 попытки. Не надо так)
Алексей Подъянов17 уровень, Екатеринбург
8 мая, 11:30
Вот здесь можно посмотреть тут
Буренин Сергей14 уровень, Самара
7 мая, 07:28
Довольно таки долго мучался, но пришел к такому компактному решению:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
SimpleDateFormat beginDateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat finalDateFormat = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);

Date date = beginDateFormat.parse(reader.readLine()); //записываем в date введенную строку в формате beginDateFormat
System.out.println(finalDateFormat.format(date).toUpperCase()); //выводим на экран преобразованную date в finalDateFormat + все буквы делаем заглавными
Буренин Сергей14 уровень, Самара
7 мая, 07:46
А вообще, как я понял, на данном этапе необходимо усвоить 2 основных метода объектов типа SimpleDateFormat. Это format и parse. - format преобразует объект типа Date в строку - parse наоборот преобразовывает объект типа строка в объект типа Date
dateFormat.forman(date) //на выходе будет строка
dateFormat.parse(str) //на выходе будет date
Анна13 уровень, Москва
14 мая, 23:38
Это великолепно! 👍 Я когда обнаружила, что метод date.setYear(х) к году х добавляет 1900, поняла, что делаю что-то не то.... 😄 зато теперь стало понятно, почему класс Date и его методы помечены как deprecated.
Vinsent Van Gogh20 уровень, Воронеж
19 мая, 01:02
"yyyy-MM-dd" можно заменить на "F" (формат даты ISO 8601).
Кирилл СПб11 уровень, Санкт-Петербург
7 мая, 07:10
такой колхоз наколхозил, мама не горюй! 1. считал строку 2. методом substring сделал из нее три строки (год, месяц, день). 3. создал Date, передав туда в конструкторе три эти строки, пропарсив их Integer.parseInt 4. создал два объекта SimpleDateFormat. один для месяца ("MMM", Locale.ENGLISH), другой для оставшейся части (" dd, yyyy"). а все потому, что забыл, что toUpperCase() можно было бы ко всему выводу применить, ведь цифрам на это пофиг. в общем, не делайте так как я 😵
Eriomin Sergey19 уровень, Брест
5 мая, 20:38
Подскажите, в IDEA вроде есть уже все. Но неужели там нет кнопочки, что бы вызвать конструктор даты для сборки шаблона типа "yyyy-MM-dd" ?
Life DIY15 уровень, Екатеринбург
14 мая, 10:50
А что бы компилятор понял что тебе нужен такой формат кнопочка наверно должна называться кнопочка как должна называться? Случайно не SimpleDateFormat с необходимым тебе паттерном?
Life DIY15 уровень, Екатеринбург
14 мая, 10:52
Я как то пытался запихать формат в конструктор Date, и если память мне не изменяет, то идея не настолько дальновидная что бы пропустить мои извращения...
Eriomin Sergey19 уровень, Брест
14 мая, 11:13
Кнопочка должна вызывать диалог, где будет написано 1 Января 2020 - "DD MMMM YYYY" 01.01.20 - "DD MM YY" 1 Янв. 2020 - "DD MMM YYYY" 01.01.2020 06:20 - "DD MM YYY hh:mm"; и так далее. Что бы человек не ломал голову, а выбрал нужный пример, и шаблон сам заполнился