Я даю сучасну відповідь.
java.time та ThreeTenABP
Щоб отримати поточну дату:
LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));
Це дає вам LocalDate
об'єкт, який ви повинні використовувати для збереження дати у вашій програмі. А LocalDate
- дата без часу доби.
Тільки тоді, коли вам потрібно відобразити дату користувачеві, відформатуйте її у рядок, що підходить для мови користувача:
DateTimeFormatter userFormatter
= DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
System.out.println(today.format(userFormatter));
Коли я запустив цей фрагмент сьогодні англійською мовою в США, вихід:
13 липня 2019 року
Якщо ви хочете, щоб він був коротшим, вкажіть FormatStyle.MEDIUM
або навіть FormatStyle.SHORT
. DateTimeFormatter.ofLocalizedDate
використовує локальний формат за замовчуванням, тому справа полягає в тому, що він дасть вихід, відповідний для цієї мови, різний для різних мов.
Якщо ваш користувач має особливі вимоги до вихідного формату, використовуйте рядок шаблону формату:
DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
"d-MMM-u", Locale.forLanguageTag("ar-AE"));
13-євро -2019
Я використовую і рекомендую java.time, сучасний API дати та часу Java. DateFormat
, SimpleDateFormat
, Date
І Calendar
використовується в питанні і / або багато інших відповіді, погано розроблені і давно застаріли. І з java.time так приємніше працювати.
Питання: Чи можна використовувати java.time на Android?
Так, java.time чудово працює на старих та новіших пристроях Android. Для цього просто потрібно принаймні Java 6 .
- У Java 8 та новіших пристроях Android (від рівня API 26) вбудований сучасний API.
- У Java 6 та 7 отримайте ThreeTen Backport, опору сучасних класів (ThreeTen для JSR 310; див. Посилання внизу).
- На (старшому) Android використовують Android-версію ThreeTen Backport. Це називається ThreeTenABP. І переконайтесь, що ви імпортуєте дати та часові класи
org.threeten.bp
з підпакетів.
Посилання
DateFormat
класу було нормально, коли це запитання було задано у 2011 році, цей клас та його підкласSimpleDateFormat
завжди були клопітними та тепер давно застаріли. Я рекомендую не використовувати їх, а замість цього заглянути в java.time, сучасний API дати та часу Java .