Android text format dateformat format

Zheka’s blog

Monday, July 1, 2013

Форматирование даты/времени в Android приложении

Одним из аспектов локализации приложения является представление времени и даты в соответствии с настройками устройства. Различные страны/регионы используют разные форматы, как следствие, нужно учитывать ряд моментов.

Первая мысль, которая приходит в голову — это использование java.text.DateFormat (и как частный случай SimpleDateFormat ):

Данный подход хорошо работает, скажем, для вэб сервиса, но он совсем неприемлем для мобильных приложений. Т.к. с большой долей вероятности для конечного пользователя шаблон форматирования не является привычным. Например, не ясно когда часы(суточное время) должны быть представлены в 12-и или 24-х часовом формате.

Более правильный решение — это использовать android.text.format.DateFormat . Класс имеет ряд методов, возвращающих шаблон представления даты/времени в соответствии с системной локалью: getDateFormat() , getTimeFormat() и т.д.

Недостаток — это полное отсутствие гибкости. Скажем, что если я не хочу показывать год или наоборот — добавить день недели? Как можно догадаться, применять такое форматирование можно лишь в частном случае, когда нет жестких требований.

Мы подошли вплотную к правильному решению — DateUtils . Класс предоставляет семейство методов formatDateTime() и formatDateRange , принимающие флаги в качестве параметров, указывающие, какие поля нужно включить в шаблон. Преимущество в том, что форматирование осуществляется автоматически с учетом локали пользователя, избавляя нас от обработки всех тонкостей вручную:

DateUtils.formatDateRange() необходим для форматирования временного диапазона(например, «Jan 5 — Feb 12» ). Может возникнуть логичный вопрос. Для чего это нужно, если можно выполнить конкатенацию двух дат с использованием formatDateTime() ? Помимо того что он проще, в опр. условиях будет выполнена оптимизация представления даты за счет уменьшения количества отображаемых полей(например, если год/месяц не меняется в рамках диапазона):

Единственная вещь в formatDateRange() на которую следует обратить внимание — округления даты. Возможно вы заметили в примере выше, что верхняя граница диапазона была округлена в меньшую сторону(до 24 декабря вместо 25-го). Это произошло из-за того, что было выполнено отсечение по суточной границе(оригинальный текст — that’s because it cuts off at midnight). Если добавить миллисекунды, то диапазон будет представлен верно.

Чтобы ваше приложение правильно представляло дату/время и по прежнему имело возможность контролировать формат DateUtils — хорошая отправная точка. Зная и умело используя флаги, можно добиться определенной гибкости.

Источник

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

Как правильно отформатировать в соответствии с конфигурацией устройства дату и время при наличии года, месяца, дня, часа и минуты?

24 ответа

У меня есть var в моем представлении, возвращающем дату и время из записи базы данных datetime в формате UTC. Вывод выглядит следующим образом: 2014-01-21 03:13:59 UTC Как мне это отформатировать? Date.parse(var) даст #=> Tue, 21 Jan 2014 в IRB, но ошибку типа в RAILS 4 Из: нет неявного.

Как отформатировать мою дату в Android. У меня есть строка, которая получает дату в следующем формате String format = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime()); Выход 25 Nov 2013 17:39:00 Я хочу, чтобы это было преобразовано в следующий формат dd/mm/yy.

Используйте стандартный класс Java DateFormat.

Например, чтобы отобразить текущую дату и время, выполните следующие действия:

Вы можете инициализировать объект даты своими собственными значениями, однако вы должны знать, что конструкторы устарели, и вы действительно должны использовать объект календаря Java.

На мой взгляд, android.text.format.DateFormat.getDateFormat(context) приводит меня в замешательство, потому что этот метод возвращает java.text.DateFormat , а не android.text.format.DateFormat — -«.

Читайте также:  Последнее обновление android one

Итак, я использую код фрагмента, как показано ниже, чтобы получить текущую дату/время в моем формате.

Кроме того, вы можете использовать другие форматы. Следуйте DateFormat .

Вы можете использовать DateFormat . Результат зависит от значения по умолчанию Locale телефона, но вы также можете указать Locale :

Это результаты на

FR Locale : 3 ноября 2017

США/En Locale : 12 января 1952 года

FR Locale : 03/11/2017

США/En Locale : 12.13.52

FR Locale : 3 ноября 2017

US/En Locale : 12 января 1952

FR Locale : 3 ноября 2017

США/En Locale : 12 января 1952 года

FR Locale : vendredi 3 ноября 2017

US/En Locale : Вторник, 12 апреля 1952 года

FR Locale : 3 ноября 2017 16:04:58

FR Locale : 03/11/2017 16:04

FR Locale : 03/11/2017 16:04:58

FR Locale : 03/11/2017 16:04:58 GMT+01:00

FR Locale : 03/11/2017 16:04:58 heure normale d’Europe centrale

FR Locale : 16:04:58

FR Locale : 16:04

FR Locale : 16:04:58

FR Locale : 16:04:58 GMT+01:00

FR Locale : 16:04:58 heure normale d’Europe centrale

У меня есть дата в строке и я использую это: SimpleDateFormat sdf = new SimpleDateFormat(dd/MM/yyyy HH:mm); dataUltima = sdf.format(sdf); чтобы отформатировать дату. Но этот метод возвращает фактическую дату системы. Как я могу только отформатировать дату, не меняя ее? Обс. Я получаю эту дату с.

У меня есть динамическая таблица, которая отображает список записей с их датой и временем. Дата и время отображаются правильно, но когда я перехожу на хостинг-сервер, я получаю другую дату и время, которые, как я знаю, основаны на его timezone. Я видел разные учебники, показывающие, как.

Дата до Locale строка даты:

— > 31 декабря 1969 года

-> 31 декабря 1969 4:00:00 PM

Это сделает это:

Использовать SimpleDateFormat

Лучше использовать Android собственный класс времени:

Используйте эти две переменные в качестве переменных класса:

И используйте его вот так:

Это мой метод, вы можете определить и формат ввода и вывода.

SimpleDateFormat

Я использую SimpleDateFormat без пользовательского шаблона , чтобы получить фактическую дату и время из системы в заранее выбранном формате устройства :

возвращается :

Вот самый простой способ:

Используйте класс build in Time!

%tR -это сокращение от %tH:%tM , означает повторное использование последнего параметра( 1$ ).

Это эквивалентно String.format(«%1$tY-%1$tm-%1$td %1$tH:%1$tM», Calendar.getInstance())

Класс формата даты работает с чит-кодом, чтобы сделать дату. Нравится

  1. М -> 7, MM -> 07, MMM -> Июль , MMMM -> Июль
  2. EEE -> Вт , EEEE -> Вторник
  3. z -> EST , zzz -> EST , zzzz -> Восточное стандартное время

Вы можете проверить больше читов здесь .

Остальные ответы, как правило, верны. Я хотел бы внести свой вклад в современный ответ. Классы Date , DateFormat и SimpleDateFormat , используемые в большинстве других ответов, давно устарели и на протяжении многих лет вызывали проблемы у многих программистов. Сегодня у нас намного лучше в java.time , он же JSR-310, современная Java дата & время API. Вы уже можете использовать это на Android? Безусловно! Современные классы были перенесены в Android в проекте ThreeTenABP. См. Этот вопрос: Как использовать ThreeTenABP в проекте Android для получения всех подробностей.

Этот фрагмент должен помочь вам начать работу:

Когда я устанавливаю предпочтительный язык своего компьютера на английский язык США или английский язык Великобритании, это печатает:

Когда вместо этого я устанавливаю его на датский, я получаю:

Таким образом, он действительно следует конфигурации. Однако я не уверен, насколько точно он соответствует настройкам даты и времени вашего устройства, и это может варьироваться от телефона к телефону.

Этот код работает на меня!

Этот код вернет текущую дату и время:

Locale

Чтобы получить дату или время в формате locale из миллисекунд, я использовал это:

Читайте также:  Андроид требует пароль после перезагрузки что делать

Дата и время

Время

Вы можете использовать другой стиль даты и стиль времени. Более подробная информация о стилях здесь .

Я использую его вот так:

И когда вы обращаетесь к переданным переменным:

Избегайте j.u.Date

Java.util.Date, .Calendar и SimpleDateFormat в Java (и Android), как известно, доставляют много хлопот. Избегайте их. Они настолько плохи, что Sun/Oracle отказался от них, заменив их новым пакетом java.time в Java 8 (а не в Android по состоянию на 2014 год). Новый java.time был вдохновлен библиотекой времени Джоды .

Джода-Время

Джода-Время действительно работает в Android.

Найдите StackOverflow для «Joda», чтобы найти много примеров и много дискуссий.

Лакомый кусочек исходного кода с использованием Joda-Time 2.4.

Вернемся к 2016 году, когда я хочу настроить формат (не в соответствии с конфигурацией устройства, как вы просите. ) Обычно я использую файл ресурсов string:

Это также полезно при выпуске новой библиотеки привязки дат .

Так что у меня может быть что-то вроде этого в файле макета:

И в java классе:

Вот как я это сделал:

Я надеюсь, что это полезно 🙂

Уже слишком поздно, но это может кому-то помочь

вот format -это то, что вам нужно

например: «HH:mm» возвращает 15:30

Похожие вопросы:

Я хочу отформатировать время так: 2011-05-11 11:22:33 . У меня был следующий код: Time time = new Time(MobiSageUtility.TIMEZONE_STRING); time.setToNow(); String timeStr= time.format(yyyy-MM-dd.

Я получаю дату и время из базы данных следующим образом Дата : 20100101(YYYY/MM/DD) Время : 120912 (HH:MM:SS) Я должен отформатировать дату следующим образом 20100101 —> (2010-10-11) (посмотрите.

Я работаю с SSRS 2008 года. Мне нужно отформатировать дату и время. В настоящее время я использую это выражение =FormatDateTime(Parameters!startdate.Value) выход этого выражения таков 1/22/2014.

У меня есть var в моем представлении, возвращающем дату и время из записи базы данных datetime в формате UTC. Вывод выглядит следующим образом: 2014-01-21 03:13:59 UTC Как мне это отформатировать.

Как отформатировать мою дату в Android. У меня есть строка, которая получает дату в следующем формате String format =.

У меня есть дата в строке и я использую это: SimpleDateFormat sdf = new SimpleDateFormat(dd/MM/yyyy HH:mm); dataUltima = sdf.format(sdf); чтобы отформатировать дату. Но этот метод возвращает.

У меня есть динамическая таблица, которая отображает список записей с их датой и временем. Дата и время отображаются правильно, но когда я перехожу на хостинг-сервер, я получаю другую дату и время.

Как я могу отформатировать эту дату-время в Delphi WED 16/11/2016 IT 15:26 . Это значение от XML, и я хочу только 16/11/2016 15:26 .

Новое в MatBlazor ниже Хотите узнать, как получить дату, отформатировать дату и получить время Есть ли у этого компонента время.

Я хотел бы знать, как правильно отформатировать дату и время? В результате получается Localdatetime yyyy-MM-ddTHH:mm. Не могли бы вы посоветовать, как решить эту проблему? Я использую Java 11, и.

Источник

Date Format Class

Definition

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Utility class for producing strings with formatted date/time.

Remarks

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

Constructors

A constructor used when creating managed representations of JNI objects; called by the runtime.

Fields

Properties

Returns the runtime class of this Object .

(Inherited from Object)

Читайте также:  Quik android x индикаторы
Handle

The handle to the underlying Android instance.

(Inherited from Object) JniIdentityHashCode (Inherited from Object) JniPeerMembers PeerReference (Inherited from Object) ThresholdClass

This API supports the Mono for Android infrastructure and is not intended to be used directly from your code.

This API supports the Mono for Android infrastructure and is not intended to be used directly from your code.

Methods

Creates and returns a copy of this object.

(Inherited from Object) Dispose() (Inherited from Object) Dispose(Boolean) (Inherited from Object) Equals(Object)

Indicates whether some other object is «equal to» this one.

(Inherited from Object) Format(String, Calendar)

Given a format string and a time in milliseconds since Jan 1, 1970 GMT, returns a CharSequence containing the requested date.

Given a format string and a time in milliseconds since Jan 1, 1970 GMT, returns a CharSequence containing the requested date.

Given a format string and a time in milliseconds since Jan 1, 1970 GMT, returns a CharSequence containing the requested date.

Given a format string and a time in milliseconds since Jan 1, 1970 GMT, returns a CharSequence containing the requested date.

Given a format string and a time in milliseconds since Jan 1, 1970 GMT, returns a CharSequence containing the requested date.

Given a format string and a time in milliseconds since Jan 1, 1970 GMT, returns a CharSequence containing the requested date.

Returns the best possible localized form of the given skeleton for the given locale.

Returns a java.text.DateFormat object that can format the date in short form according to the context’s locale.

Gets the current date format stored as a char array.

Returns a hash code value for the object.

(Inherited from Object) GetLongDateFormat(Context)

Returns a java.text.DateFormat object that can format the date in long form (such as Monday, January 3, 2000 ) for the context’s locale.

Returns a java.text.DateFormat object that can format the date in medium form (such as Jan 3, 2000 ) for the context’s locale.

Returns a java.text.DateFormat object that can format the time according to the context’s locale and the user’s 12-/24-hour clock preference.

Returns true if times should be formatted as 24 hour times, false if times should be formatted as 12 hour (AM/PM) times.

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

(Inherited from Object) Notify()

Wakes up a single thread that is waiting on this object’s monitor.

(Inherited from Object) NotifyAll()

Wakes up all threads that are waiting on this object’s monitor.

(Inherited from Object) SetHandle(IntPtr, JniHandleOwnership)

Sets the Handle property.

(Inherited from Object) ToArray () (Inherited from Object) ToString()

Returns a string representation of the object.

(Inherited from Object) UnregisterFromRuntime() (Inherited from Object) Wait()

Causes the current thread to wait until another thread invokes the java.lang.Object#notify() method or the java.lang.Object#notifyAll() method for this object.

(Inherited from Object) Wait(Int64)

Causes the current thread to wait until another thread invokes the java.lang.Object#notify() method or the java.lang.Object#notifyAll() method for this object.

(Inherited from Object) Wait(Int64, Int32)

Causes the current thread to wait until another thread invokes the java.lang.Object#notify() method or the java.lang.Object#notifyAll() method for this object.

(Inherited from Object)

Explicit Interface Implementations

IJavaPeerable.Disposed() (Inherited from Object)
IJavaPeerable.DisposeUnlessReferenced() (Inherited from Object)
IJavaPeerable.Finalized() (Inherited from Object)
IJavaPeerable.JniManagedPeerState (Inherited from Object)
IJavaPeerable.SetJniIdentityHashCode(Int32) (Inherited from Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) (Inherited from Object)
IJavaPeerable.SetPeerReference(JniObjectReference) (Inherited from Object)

Extension Methods

Performs an Android runtime-checked type conversion.

Источник

Оцените статью