отображение AM и PM в маленькой букве после форматирования даты

После даты форматирования я показываю время, показывающее AM или PM (в верхнем случае), я хочу, чтобы он был в нижнем регистре, например am, pm это мой код

public class Timeis { public static void main(String s[]) { long ts = 1022895271767L; String st = null; st = new SimpleDateFormat(" MMM d 'at' hh:mm a").format(ts); System.out.println("time is " + ts); } } 

7 Solutions collect form web for “отображение AM и PM в маленькой букве после форматирования даты”

К сожалению, стандартные методы форматирования не позволяют делать это. И Йода тоже. Я думаю, вам придется обрабатывать вашу форматированную дату простой заменой после формата.

 String str = oldstr.replace("AM", "am").replace("PM","pm"); 

Вы можете использовать метод replaceAll() который использует regepxs, но я думаю, что вышеуказанное возможно достаточно. Я не делаю одеяло toLowerCase() поскольку это может toLowerCase() форматирование, если вы измените строку формата в будущем, чтобы содержать (скажем) месячные имена или аналогичные.

EDIT: решение Джеймса Дзитина выглядит намного лучше, и правильный способ сделать это (как отмечается в комментариях)

Это работает

 public class Timeis { public static void main(String s[]) { long ts = 1022895271767L; SimpleDateFormat sdf = new SimpleDateFormat(" MMM d 'at' hh:mm a"); // CREATE DateFormatSymbols WITH ALL SYMBOLS FROM (DEFAULT) Locale DateFormatSymbols symbols = new DateFormatSymbols(Locale.getDefault()); // OVERRIDE SOME symbols WHILE RETAINING OTHERS symbols.setAmPmStrings(new String[] { "am", "pm" }); sdf.setDateFormatSymbols(symbols); String st = sdf.format(ts); System.out.println("time is " + st); } } 

Попробуй это:

 System.out.println("time is " + ts.toLowerCase()); 

Хотя вы можете создать собственный формат, подробно описанный здесь и здесь.

К сожалению, из коробки AM и PM, похоже, не могут быть настроены в стандартном classе SimpleDateFormat

Если вы не хотите выполнять замену строк и используете Java 8 javax.time :

 Map ampm = new HashMap<>(); ampm.put(0l, "am"); ampm.put(1l, "pm"); DateTimeFormatter dtf = new DateTimeFormatterBuilder() .appendPattern("EM/dh:mm") .appendText(ChronoField.AMPM_OF_DAY, ampm) .toFormatter() .withZone(ZoneId.of("America/Los_Angeles")); 

Необходимо вручную создать DateTimeFormatter (указать отдельные части), так как нет символа шаблона для нижнего регистра am / pm. Вы можете использовать appendPattern до и после.

Я считаю, что нет возможности заменить символы am / pm по умолчанию, поскольку это единственный способ сократить замену строки в последней строке.

 Calendar c = Calendar.getInstance(); System.out.println("Current time => " + c.getTime()); SimpleDateFormat df = new SimpleDateFormat("HH:mm a"); String formattedDate = df.format(c.getTime()); formattedDate = formattedDate.replace("am", "AM").replace("pm","PM"); TextView textView = findViewById(R.id.textView); textView.setText(formattedDate); 

Ответ Джеймса велик, если вы хотите другой стиль, отличный от дефолта am, pm. Но, боюсь, вам нужно сопоставить локальные и локальные специфические AM / PM, установленные для использования переопределения. Теперь вы просто используете java встроенный class java.util.Formatter. Поэтому простой пример выглядит так:

 System.out.println(String.format(Locale.UK, "%1$tl%1$tp", LocalTime.now())); 

Это дает:

 9pm 

Чтобы отметить, что если вы хотите использовать верхний регистр, просто замените «% 1 $ t p» на «% 1 $ T p». Вы можете найти более подробную информацию по адресу http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#dt .

просто добавьте toLowarCase() как это

 public class Timeis { public static void main(String s[]) { long ts = 1022895271767L; String st = null; st = new SimpleDateFormat(" MMM d 'at' hh:mm a").format(ts).toLowerCase(); System.out.println("time is " + ts); } } 

и toUpperCase() если вы хотите, чтобы верхний регистр

  • Проект Android Studio Gradle «Невозможно запустить процесс / инициализацию виртуальной машины»
  • Сравнение строк - Android
  • свойство системы настройки
  • Android Thread для таймера
  • Java: как обращаться к методам из другого classа
  • Динамический список в приложении Android
  • Как сравнить два двойных значения в Java?
  • Почему вызовы метода интерфейса медленнее, чем конкретные вызовы?
  • java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
  • Android - Как сделать скриншот программным
  • Повышение числа на Java
  • Давайте будем гением компьютера.