Как правильно отформатировать в соответствии с датой и временем конфигурации устройства при наличии года, месяца, дня, часа и минуты?
321
Используйте стандартный класс Java DateFormat.
Например, для отображения текущей даты и времени сделайте следующее:
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
Вы можете инициализировать объект Date своими собственными значениями, однако вы должны знать, что конструкторы устарели, и вам действительно следует использовать объект Java Calendar.
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
возвращенный формат даты имеет типjava.text.DateFormat
(и НЕandroid.text.format.DateFormat
)На мой взгляд,
android.text.format.DateFormat.getDateFormat(context)
меня смущает, потому что этот метод возвращает,java.text.DateFormat
а неandroid.text.format.DateFormat
- - ".Итак, я использую фрагмент кода, как показано ниже, чтобы получить текущую дату / время в моем формате.
Кроме того, вы можете использовать другие форматы. Следуйте DateFormat .
источник
hh:mm:ss
это даст вам01:00:00
1 вечера, вам нужно использовать,kk:mm:ss
чтобы получить13:00:00
k
- это час в день (1-24), вы не имеете в видуH
, что это час в день (0-23), например. HH: мм: сс? Смотрите: developer.android.com/reference/java/text/SimpleDateFormat.htmljava.text.SimpleDateFormat
(что вы связали и используетеH
для часов в диапазоне 0-23) иandroid.text.format.DateFormat
(что ответ и используетk
для часов в диапазоне 0-23)k
в отношении документации, в которойDateFormat
четко указаны состояния. Каноническую документацию строк формата см. в SimpleDateFormat. Очень запутанно. Или я что-то упустил?Вы можете использовать
DateFormat
. Результат зависит от локали телефона по умолчанию, но вы также можете указать локаль:https://developer.android.com/reference/java/text/DateFormat.html
Это результаты на
FR Locale: 3 ноября. 2017
США / En Locale: 12 января 1952 г.
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
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
-> 4:00:00 вечера
источник
Это сделает это:
источник
Используйте SimpleDateFormat
Как это:
источник
new SimpleDateFormat("my-format", Locale.getDefault());
После этого: http://developer.android.com/reference/android/text/format/Time.html
Лучше всего использовать Android родной класс Time:
Затем отформатируйте:
источник
Используйте эти две переменные класса:
И используйте это так:
источник
Это мой метод, вы можете определить и формат ввода и вывода.
источник
SimpleDateFormat
Я использую SimpleDateFormat без пользовательского шаблона для получения фактической даты и времени из системы в предварительно выбранном формате устройства:
возвращает :
источник
Используйте сборку в классе Time!
источник
Другие ответы, как правило, правильные. Я хотел бы внести современный ответ. Классы
Date
,DateFormat
иSimpleDateFormat
используются в большинстве других ответов, давно устарел и вызвали проблемы для многих программистов на протяжении многих лет. Сегодня у нас намного лучшеjava.time
, AKA JSR-310, современный Java date & time API. Можете ли вы использовать это на Android еще? Несомненно! Современные классы были перенесены на Android в проекте ThreeTenABP. Смотрите этот вопрос: Как использовать ThreeTenABP в Android Project для всех деталей.Этот фрагмент должен помочь вам начать:
Когда я устанавливаю предпочтительный язык моего компьютера на американский английский или английский английский, это печатает:
Когда вместо этого я устанавливаю на датский, я получаю:
Так что следуйте конфигурации. Однако я не уверен, насколько точно он соответствует настройкам даты и времени вашего устройства, и это может варьироваться от телефона к телефону.
источник
Этот код работает для меня!
источник
Класс формата даты работает с чит-кодом для создания даты. подобно
Вы можете проверить больше читов здесь .
источник
Этот код вернет текущую дату и время:
источник
место действия
Чтобы получить дату или время в формате локали из миллисекунд, я использовал это:
Дата и время
Дата
Время
Вы можете использовать другой стиль даты и времени. Больше информации о стилях здесь .
источник
Кратчайший путь:
%tR
сокращенно%tH:%tM
,<
означает повторное использование последнего параметра (1$
).Это эквивалентно
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
источник
Пытаться:
И когда вы получаете доступ к переданным переменным:
источник
Я использую это так:
источник
Избегайте новизны
Java.util.Date и .Calendar и SimpleDateFormat в Java (и Android) общеизвестно проблематичны. Избежать их. Они настолько плохи, что Sun / Oracle отказались от них, вытеснив их новым пакетом java.time в Java 8 (не в Android по состоянию на 2014 год). Новое
java.time
было вдохновлено Joda-Time библиотекой .Joda времени
Joda времени работает в Android.
Ищите StackOverflow для "Joda", чтобы найти много примеров и много обсуждений.
Небольшая часть исходного кода с использованием Joda-Time 2.4.
Стандартный формат
Локализованный формат.
источник
Назад к 2016 году, когда я хочу настроить формат (не в соответствии с конфигурацией устройства, как вы просите ...), я обычно использую файл строковых ресурсов:
в strings.xml:
В деятельности:
Это также полезно с выпуском новой библиотеки привязки даты .
Так что я могу иметь что-то вроде этого в файле макета:
И в классе Java:
источник
Класс времени Android предоставляет 3 метода форматирования: http://developer.android.com/reference/android/text/format/Time.html.
Вот как я это сделал:
Я надеюсь, что это полезно :-)
источник
Слишком поздно, но это может кому-то помочь
вот
format
какой формат тебе нуженнапример: "ЧЧ: мм" возвращается 15:30
источник