В чем разница между android.text.format.DateFormat и java.text.DateFormat - PullRequest
14 голосов
/ 16 декабря 2011

Я читаю некоторые посты по форматированию даты на андроиде, вот так:

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

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

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

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

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

Ответы [ 2 ]

14 голосов
/ 25 ноября 2014

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

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

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

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

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

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

0 голосов
/ 16 декабря 2011

Как насчет самопомощи здесь?Сравните API, прочитайте JavaDocs и убедитесь сами:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...