Подтвердить что ты не робот

В чем разница между android.text.format.DateFormat и java.text.DateFormat

Я прочитал несколько сообщений о дате форматирования на Android, например:

Как вы форматируете дату и время в Android?

Люди предлагают использовать android.text.format.DateFormat, а не java.text.DateFormat,

Также здесь упоминается проблема при преобразовании даты в строку в android:

Слишком длинный часовой пояс загрузки Android: загруженные имена часовых поясов для en_US

Мне интересно, какая разница между android.text.format.DateFormat и java.text.DateFormat?

4b9b3361

Ответ 2

Насколько я могу судить, android.text.format.DateFormat имеет некоторые функции из java.text.DateFormat, некоторые из функций от java.text.SimpleDateFormat и некоторые дополнительные функциональные возможности.

Наиболее заметно:

  • java SimpleDateFormat позволяет создавать произвольные нелокализованные форматы.
  • java DateFormat позволяет создавать три локализованных формата каждый для дат и времени с помощью методов factory.
  • Андроид DateFormat разрешает большинство из вышеперечисленных (произвольные форматы и меньшее количество локализованных форматов), но также предоставляет getBestDateTimePattern, который выбирает строку формата, соответствующую языку, которая содержит элементы, заданные с учетом соответствия локали и пунктуации.

Итак, если вам нужен локализованный формат даты и времени, отличный от трех, предоставленных java DateFormat, класс android DateFormat является решением.

Менее важно, но дополнительное удобство: методы android DateFormat могут принимать календарь или длинные миллисекунды напрямую, вместо того, чтобы требовать объект Date. Я всегда предпочитаю работать с календарем или длинной датой. Кроме того, он должным образом учитывает часовой пояс объекта Calendar, тогда как получение даты из календаря и передача этого файла вместе с форматом теряет информацию о часовом поясе. (Ничего, что вы не можете обойти с помощью java DateFormat setCalendar, но это приятно, когда вам не нужно.)

Наконец, и, что не менее важно, некоторые из методов Android DateFormat на самом деле не создают форматировщик, вы просто создаете строку формата. Все эти методы класса являются статическими. Методы делают, что конструкция DateFormat фактически создает java DateFormat!