Android - изменить формат даты на дд / мм / гг - PullRequest
1 голос
/ 24 апреля 2020
Calendar calendar = Calendar.getInstance();
String currentDate = DateFormat.getDateInstance(DateFormat.SHORT).format(calendar.getTime());

Я пытаюсь получить текущую дату, но в формате ДД / ММ / ГГ, но он дает мне ММ / ДД / ГГ. Есть предложения о том, как это исправить?

Ответы [ 4 ]

2 голосов
/ 24 апреля 2020

Вы можете использовать SimpleDateFormat класс:

Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
String currentDate = sdf.format(calendar.getTime());
1 голос
/ 24 апреля 2020

tl; dr

Современный подход использует java .time классов.

LocalDate
.now
(
    ZoneId.of( "Africa/Casablanca" )
)
.format
(
    DateTimeFormatter.ofPattern( "dd/MM/uu" )
)

Избегайте устаревших классов даты и времени

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

java .time

Для значения только для даты, без времени суток и без часового пояса, используйте LocalDate.

Часовой пояс необходим для определения текущей даты. В любой момент в Японии дата может быть «завтра», а в Мексике - «вчера».

ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate ld = LocalDate.now( z ) ;

Создать строку с текстом в стандартном формате ISO 8601.

String output = ld.toString() ;

Создайте строку с текстом в вашем пользовательском формате.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uu" ) ;
String output = ld.format( f ) ;

О java .time

* 1163 Фреймворк * .time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar и & SimpleDateFormat.

Чтобы узнать больше, см. Учебник Oracle . И поиск переполнения стека для многих примеров и объяснений. Спецификация: JSR 310 .

Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java .time классов.

Вы можете обмениваться java .time объектами напрямую с вашей базой данных. Используйте драйвер JDB C , совместимый с JDB C 4.2 или более поздней версией. Нет необходимости в строках, нет необходимости в java.sql.* классах. Поддержка Hibernate 5 и JPA 2.2 java .time .

Где взять java .time классы?

  • Java SE 8 , Java SE 9 , Java SE 10 , Java SE 11 и более поздних версий - часть стандартного API Java со связанной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большинство функций java .time перенесено на Java 6 & 7 в ThreeTen-Backport .
  • Android
    • Более поздние версии Android комплектных реализаций классов java .time .
    • Для более ранних Android (<26) <a href="https://github.com/JakeWharton/ThreeTenABP" rel="nofollow noreferrer"> ThreeTenABP проект адаптируется ThreeTen-Backport (упомянуто выше). См. Как использовать ThreeTenABP… .
1 голос
/ 24 апреля 2020

Полагаю, вы хотите изменить формат даты.

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
Date date = fmt.parse(dateString);

SimpleDateFormat fmtOut = new SimpleDateFormat("dd-MM-yyyy");
return fmtOut.format(date);

Надеюсь, что это поможет.

0 голосов
/ 24 апреля 2020

Я пытаюсь получить текущую дату, но в формате ДД / ММ / ГГ,…

Не получается. Поверьте, что пользователь лучше знает свою локаль, а данные локали, встроенные в Java, знают правильный формат даты для этой локали. В то время как 24/04/20 может быть хорошим форматом для вашей локали, на устройствах в других локалях может быть предпочтительнее использовать другой формат.

Использование java .time, современные Java дата и время API:

    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
    LocalDate d = LocalDate.now(ZoneId.systemDefault());
    System.out.println(d.format(dateFormatter));

Кстати, во многих регионах, включая Yiddi sh, Галлеган, Индонезийский, Узбекский, Таджикский, Сомалийский, Малайский, Итальянский и Новая Зеландия. Engli sh. Выход будет таким, как вы сказали, что вы хотели :

24/04/20

Я рекомендую использовать java .time для вашей работы на свидании. DateFormat - общеизвестно неприятный класс, а Calendar тоже плохо спроектирован. Оба давно устарели. И с java .time гораздо приятнее работать.

Вопрос: Разве java .time не требует Android API уровня 26?

java .time работает приятно как на старых, так и на новых Android устройствах. Для этого требуется как минимум Java 6 .

  • В Java 8 и более поздних версиях, а также на более новых Android устройствах (от уровня API 26) современный встроенный API -in.
  • В не- Android Java 6 и 7 получите ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. ссылки внизу).
  • Вкл. (Старше) Android используйте редакцию ThreeTen Backport Android. Это называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.

Ссылки

...