Android date format from string

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

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

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

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

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

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

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

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

Дата для строки даты локали:

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

-> 31 декабря 1969 года 16:00:00

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

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

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

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

Используйте сборку в классе времени!

SimpleDateFormat

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

Возвращает :

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

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

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

И когда вы получаете доступ к переданным переменным:

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

Избегайте juDate

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

Joda времени

Joda-Time работает в Android.

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

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

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

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

Поэтому я могу иметь что-то подобное в файле макета:

И в классе java:

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

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

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

Здесь format – это формат, который вам нужен

Источник

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Android intent action settings

FR Locale: 03/11/2017

США / En Locale: 12.13.52

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

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

FR Locale: 3 ноября 2017

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

FR Местонахождение: 3 ноября 2017

США / En Locale: вторник, 12 апреля 1952 г.

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

FR Locale: 11.03.2017 16:04

FR Locale: 11.03.2017 16:04:58

FR Местонахождение: 11.03.2017 16:04:58 GMT + 01: 00

FR Местонахождение: 11.03.2017 16:04:58 heure normale d’Europe centrale

FR Locale: 16:04:58

FR Locale: 16:04:58

FR Язык: 16:04:58 GMT + 01: 00

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

Строка даты для локали:

-> 31 декабря 1969 г.

-> 31 декабря 1969 г. 16:00:00

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

Используйте SimpleDateFormat

Лучше всего использовать Android родной класс Time:

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

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

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

SimpleDateFormat

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

возвращает :

Используйте сборку в классе Time!

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

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

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

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

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

Источник

Форматирование чисел в Android-приложении: уроки программирования

Проблема

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

Решение

Используйте функцию String.format() или один из подклассов класса NumberFormat .

Обсуждение

Функция printf() была впервые включена в язык программирования С в 1970- х гг. и использовалась на многих других языках, включая Java. Вот простой пример printf() в версии Java SE:

В предыдущем примере можно было бы напечатать что-то вроде этого:

Поскольку мы не используем System.out на платформе Android, вам будет приятно заметить, что вы можете получить ту же строку, которая будет напечатана, для того, чтобы поместить ее в представление, используя:

Если раньше вы не видели функцию printf() , то первым аргументом, очевидно, является строка кода формата, а любые другие аргументы (имя пользователя и время) являются значениями, которые нужно форматировать. Коды формата начинаются со знака процента ( % ) и имеют хотя бы один код для элементарных типов.

В табл. 1 приведены некоторые коды для элементарных типов.

Таблица 1. Некоторые коды для форматирования элементарных типов

Символ

Значение

Строка (конвертировать элементарные значения с использованием значений по умолчанию, конвертировать объекты с помощью функции toString )

Десятичное целое число (int, long)

Число с плавающей точкой (float, double)

Форматы времени/даты, специфичные для Java; См. в конце статьи

Форматирование даты по умолчанию довольно уродливое, поэтому нам часто нужно расширять его. Возможности форматирования printf() на самом деле размещены в классе java.util.Formatter , на который должна быть сделана ссылка.

В отличие от функции printf() на других языках, которые вы, возможно, использовали, все эти форматные процедуры необязательно позволяют ссылаться на аргументы по их числу, помещая число плюс знак доллара после ввода знака % , но до собственно кода форматирования. Например, %2$3.1f означает форматирование второго аргумента как десятичного числа с тремя символами и одной цифрой после десятичной точки. Эта нумерация может использоваться для двух целей: изменить порядок, в котором выводятся аргументы (часто полезны с интернационализацией), и ссылаться на данный аргумент более одного раза. Формат даты/времени t требует после него второго символа, такого как Y для года, m для месяца и т. д. Здесь мы берем аргумент time и извлекаем из него несколько полей:

Читайте также:  Сбросит до заводских настроек смартфон андроид

Это выдаст: July 4, 2010 .

Для того чтобы печатать номера с определенной точностью, вы можете использовать параметр f , задав ширину и точность, например:

Результат может выглядеть так:

Хотя такое форматирование подходит для конкретных целей, таких как широта и долгота, для общего использования (например, для вывода суммы валюты) оно может дать вам слишком большой контроль.

Общие форматы

В языке Java есть целый пакет java.text , который полон процедур форматирования как общих и гибких, так и всех, что вы можете себе представить. Как и в функции printf() , в нем используется язык форматирования, описанный на онлайн-странице документации. Рассмотрим представление чисел. В Северной Америке число “одна тысяча двадцать четыре и четверть” имеет вид 1, 024.25; в большинстве стран Европы — 1 024,25, а в некоторых других странах это может быть написано как 1.024, 25. Форматирование валют и процентов также отличается большим разнообразием. Попытка отслеживать это сама по себе быстро переутомила бы среднего разработчика программного обеспечения.

К счастью, пакет java.text включает класс Locale . Кроме того, среда выполнения Java или Android автоматически устанавливает объект класса Locale по умолчанию на основе среды пользователя; этот код работает как на настольных компьютерах в среде Java, так и на устройствах Android. Чтобы обеспечить форматирование, настроенное для чисел, валют и процентов, класс NumberFormat имеет статические встроенные методы, которые обычно возвращают объект класса Decimal Format с уже созданным шаблоном. Объект класса Decimal Format, соответствующий локализации пользователя, может быть получен с помощью встроенного метода NumberFormat.getlnstance() и управляться с использованием set-методов. Удивительно, но метод setMinimumlntegerDigits() оказывается простым способом создания формата чисел с ведущими нулями. Рассмотрим пример.

Пример 2. Пример форматирования числа

Этот код печатает содержимое массива с помощью экземпляра класса NumberFormat . Мы показываем запуск его как основной программы, а не в приложении для Android, чтобы подчеркнуть эффекты класса NumberFormat .

Например, инструкция $ java NumFormat2 0.0 форматирует нуль как 000.00 ; с аргументом 1.0 она создает представление 001.00 , число 3.142857142857143 она представляет как 003.1429 , а 100.2345678 — как 100.2346 .

Вы также можете создать объект класса DecimalFormat с определенным шаблоном или динамически изменять шаблон с помощью метода applyPattern() . В табл. 2 показаны некоторые из наиболее распространенных шаблонных символов.

Таблица 2. Общие СИМВОЛЫ шаблона DecimalFormat

Символ Значение
# Цифра (подавление ведущих нулей)
0 Цифра (указаны ведущие нули)
. Локализованный десятичный разделитель (десятичная точка)
, Локализованный разделитель групп (запятая на английском языке)
Локализованный минус (знак «минус»)
% Показывает значение в процентах
; Отделяет два формата: первый для положительного значения и второй для отрицательного
Выводит предыдущий символ как таковой
Другие Появляется без обработки

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

Пример 3. Программа демоверсии NumberFormat Java SE

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

Источник

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

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

ОТВЕТЫ

Ответ 1

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

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

Читайте также:  Как настроить сдк андроид студио

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

Ответ 2

По-моему, android.text.format.DateFormat.getDateFormat(context) меня смущает, потому что этот метод возвращает java.text.DateFormat , а не android.text.format.DateFormat — — «.

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

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

Ответ 3

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

Это результаты на телефоне во французском языке:

==> vendredi 3 ноября 2017

==> 3 нов. 2017 16:04:58

==> 03/11/2017 16:04:58 GMT + 01: 00

==> 03/11/2017 16:04:58 heure normale dEurope centrale

==> 16:04:58 GMT + 01: 00

==> 16:04:58 heure normale dEurope centrale

Ответ 4

Дата для строки даты локали:

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

— > 31 декабря 1969 года 4:00:00 PM

Ответ 5

Это будет сделано:

Ответ 6

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

Ответ 7

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

Ответ 8

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

И используйте его следующим образом:

Ответ 9

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

Ответ 10

Использовать сборку в классе времени!

Ответ 11

SimpleDateFormat

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

возвращает

Ответ 12

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

Ответ 13

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

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

Когда я задаю предпочитаемый язык моим компьютерам на английском или английском английском, это напечатает:

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

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

Ответ 14

И когда вы получаете доступ к переданным переменным:

Ответ 15

Я использую его следующим образом:

Ответ 16

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

Ответ 17

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

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

Joda времени

Joda-Time работает в Android.

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

Неповторимый исходный код с использованием Joda-Time 2.4.

Ответ 18

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

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

Итак, я могу иметь что-то подобное в файле макета:

И в классе java:

Ответ 19

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

Надеюсь, что это поможет: -)

Ответ 20

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

здесь format — какой формат вам нужен

ex: «HH: mm» возвращает 15:30

Ответ 21

Locale

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

Дата и время

Время

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

Источник

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