Получить время для андроид

Классы Date, Calendar, DateFormat

Класс Date предназначен для работы с текущими датой и временем и позволяет отталкиваться от них для решения своих задач. При выходе новых версий Java часть методов класса была перемещена в классы Calendar и DateFormat.

При импорте выбирайте java.util.Date, а не java.sql.Date.

У класса есть два конструктора:

Первый конструктор без параметров инициализирует объект текущей датой и временем. Во втором конструкторе вы можете указать количество миллисекунд, прошедших с полуночи 1 января 1970 года.

  • boolean after(Date date) — если объект класса Date содержит более позднюю дату, чем указано в параметре, то возвращается true
  • boolean before(Date date) — если объект класса Date содержит более раннюю дату, чем указано в параметре, то возвращается true
  • int compareTo(Date date) — сравнивает даты. Возвращает 0, если совпадают, отрицательное значение — если вызывающая дата более ранняя, положительное значение — если вызывающая дата более поздняя, чем в параметре
  • boolean equals(Object object) — если даты совпадают, то возвращается true
  • long getTime() — возвращает количество миллисекунд, прошедших с полуночи 1 января 1970 года
  • void setTime(long milliseconds) — устанавливает время и дату в виде числа миллисекунд, прошедших с полночи 1 января 1970 года.

Если вы посмотрите документацию, то увидите, что существует множество методов для получения или установки отдельных компонентов времени и даты, например, getMinutes()/setMinutes() и др. Все они являются устаревшими и вместо них следует использовать класс Calendar.

Простой пример вывода даты на экран.

С помощью метода getTime() можно отобразить количество миллисекунд, прошедших с 1 января 1970 года. Обновим пример

Calendar

Абстрактный класс Calendar позволяет преобразовать время в миллисекундах в более удобном виде — год, месяц, день, часы, минуты, секунды. Существуют также подклассы, например, GregorianCalendar.

Переменная типа boolean под именем areFieldsSet указывает, были установлены компоненты времени. Переменная fields — это массив целочисленных значений, содержащий компоненты времени. Переменная isSet — массив типа boolean, указывающий, был ли установлен специфический компонент времени. Переменная time (тип long) содержит текущее время объекта. Переменная isTimeSet (тип boolean) указывает, что было установлено текущее время.

У класса много методов. Вкратце опишем часть из них:

  • abstract void add(int field, int value) — добавляет value к компоненту времени или даты, указанному в параметре field (например, Calendar.HOUR). Чтобы отнять, используйте отрицательное значение.
  • boolean after(Object calendar) — возвращает значение true, если вызывающий объект класса Calendar содержит более позднюю дату, чем calendar.
  • boolean before(Object calendar) — возвращает значение true, если вызывающий объект класса Calendar содержит более раннюю дату, чем calendar.
  • final void clear() — обнуляет все компоненты времени в вызывающем объекте.
  • final void clear(int field) — обнуляет компонент, указанный в параметре field
  • int get(int field) — возвращает значение одного компонента, например, Calendar.MINUTE
  • synchronized static Locale[] getAvailableLocales() — возвращает массив объектов класса Locale, содержащий региональные данные
  • synchronized static Calendar getInstance() — возвращает объект класса Calendar для региональных данных и часового пояса по умолчанию. Есть и другие перегруженные версии.
  • final Date getTime() — возвращает объекта класса Date, содержащий время, эквивалентное вызывающему объекту
  • TimeZone getTimeZone() — возвращает часовой пояс
  • final boolean isSet(int field) — возвращает значение true, если указанный компонент времени указан.
  • void set(int field, int value) — устанавливает компоненты даты или времени. Есть перегруженные версии
  • final void setTime(Date date) — устанавливает различные компоненты даты и времени через объект класса Date
  • void setTimeZone(TimeZone timezone) — устанавливает часовой пояс через объект класса TimeZone

Также в календаре определены много различных констант: AUGUST и другие месяцы, SATURDAY и другие дни недели, HOUR и т.д.

GregorianCalendar

Класс GregorianCalendar является подклассом Calendar, который представляет обычный Григорианский календарь. Метод getInstance() класса Calendar обычно возвращает объект класса GregorianCalendar, инициированный текущей датой и временем согласно региональным настройкам.

Читайте также:  Звук при разговоре для андроид

У класса есть два поля AD и BC — до нашей эры и наша эра.

Кроме стандартных методов, которые есть в классе Calendar, у GregorianCalendar есть метод isLeapYear() для проверки високосного года.

Если год високосный, то возвращается true.

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

А получать нужные отрезки времени можно через метод get(). Например, узнать, какой месяц содержится в созданной нами дате можно так:

Изменить состояние объекта можно через метод set(). Например, установим новую дату у нашего объекта.

Можно сдвинуть дату на определённый период с помощью метода add(). Отодвинем дату на два месяца.

Методы getTime() и setTime() работают с объектами Date и полезны для преобразования.

TimeZone

Класс TimeZone позволяет работать с часовыми поясами, смещёнными относительно Гринвича, также известного универсальное глобальное время (UTC). Класс также учитывает летнее время.

SimpleTimeZone

Класс SimpleTimeZone — подкласс класса TimeZone и позволяет работать с часовыми поясами в Григорианском календаре.

Класс DateFormat

Класс DateFormat является абстрактным классом, с помощью которого можно форматировать и анализировать показания даты и времени. метод getDateInstance() возвращает экземпляр класса DateFormat, который может форматировать информацию о дате.

Чаще всего используется метод format(), позволяющий вывести дату в нужном формате.

Класс SimpleDateFormat

Класс SimpleDateFormat является подклассом класса DateFormat и позволяет определять собственные шаблоны форматирования для отображения даты и времени.

Символы форматирования строки

  • A — AM или PM
  • d — день месяца (1-31)
  • D — день в году (1-366)
  • H — часы в формате AM/PM (1-12)
  • K — часы в формате суток (1-24)
  • M — минуты (0-59)
  • S — секунды (0-59)
  • W — неделя в году (1-53)
  • y — год
  • z — часовой пояс

Количество повторений символа определяет способ представления даты. Например, можно указать hh:mm:ss, а можно h:m:s. В первом случае будет отображаться ноль перед цифрой.

Примеры работы с датами и временем можно найти в статье на эту тему.

Источник

Диалоговые окна

DatePickerDialog и TimePickerDialog

По умолчанию в Android уже определены два диалоговых окна — DatePickerDialog и TimePickerDialog , которые позволяют выбрать дату и время.

Кроме установки даты DatePickerDialog позволяет обработать выбор даты с помощью слушателей OnDateChangedListener и OnDateSetListener . Что позволяет использовать выбранную дату далее в приложении.

Подобным образом TimePickerDialog позволяет обработать выбор времени с помощью слушателей OnTimeChangedListener и OnTimeSetListener

Пи работе с данными компонентами надо учитывать, что отсчет месяцев в DatePickerDialog начинается с нуля, то есть январь будет иметь номер 0, а декабрь — 11. И аналогично в TimePickerDialog отсчет секунд и минут будет идти с 0 до 59, а часов — с 0 до 23.

Используем DatePickerDialog и TimePickerDialog в приложении. Определим следующую разметку интерфейса в activity_main.xml :

Здесь определены две кнопки для выбора даты и времени и текстовое поле, отображающее выбранные дату и время. И изменим код MainActivity :

Ключевым классом здесь является java.util.Calendar , который хранится в стандартной библиоетке классов Java. В методе setInitialDateTime() мы получаем из экземпляра этого класса количество миллисекунд dateAndTime.getTimeInMillis() и с помощью форматирования выводим на текстовое поле.

Метод setDate() , вызываемый по нажатию на кнопку, отображает окно для выбора даты. При создании окна его объекту передается обработчик выбора даты DatePickerDialog.OnDateSetListener , который изменяет дату на текстовом поле.

Аналогично метод setTime() отображает окно для выбора времени. Объект окна использует обработчик выбора времени TimePickerDialog.OnTimeSetListener , который изменяет время на текстовом поле.

И поле запуска, нажав на кнопку изменения времени, мы сможем установить время:

Источник

Как я могу получить текущую дату в Android?

Я написал следующий код

Но задает мне параметр, мне нужна текущая дата в строковом формате,

чтобы я мог установить более TextView ,

немного объясните, если вы считаете, что что-то необходимо, я новичок в разработке Android.

Вы можете использовать класс SimpleDateFormat для форматирования даты в желаемом формате.

Просто проверьте эту ссылку, где вы получите идею для вашего примера.

Обновить:

Подробный пример здесь, я бы посоветовал вам пройти этот пример и понять концепцию класса SimpleDateFormat.

Окончательное решение:

Его простой однострочный код для получения текущей даты в этом формате гггг-мм-дд, вы можете использовать свой формат, который вы хотите:

Читайте также:  Fifa mobile android монеты

Это не связано с андроидом, поскольку он основан на Java, поэтому вы можете использовать

Сначала вам нужен экземпляр

Работает как шарм и конвертирует в String в качестве бонуса;)

//импортируем класс Date как java.util

В приведенном ниже коде отображаются время и дата

Простая настройка решения Paresh:

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

Я даю современный ответ.

java.time и ThreeTenABP

Чтобы получить текущую дату:

Это дает вам объект LocalDate , который вы должны использовать для хранения даты в вашей программе. LocalDate – это дата без времени суток.

Только когда вам нужно отобразить дату для пользователя, отформатируйте ее в строку, подходящую для локали пользователя:

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

Если вы хотите, чтобы он был короче, укажите FormatStyle.MEDIUM или даже FormatStyle.SHORT . DateTimeFormatter.ofLocalizedDate использует локаль форматирования по умолчанию, поэтому дело в том, что она выдаст выходные данные, подходящие для этой локали, отличающиеся для разных локалей.

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

Источник

Как получить текущее время из интернета в Андроид

Я делаю приложение, в котором я хочу получить текущее время из интернета.

Я знаю, как получить время с устройства с помощью System.currentTimeMillis и даже после поиска много, я не получил никакого понятия о том, как получить его из интернета.

6 ответов

вы можете получить время от сервера времени интернет, используя программу

1.Вам понадобится Apache Commons Net библиотека для этого, чтобы работать. скачать библиотека и добавить в свой путь сборки проекта.

(или вы также можете использовать обрезанную библиотеку Apache Commons Net здесь:https://www.dropbox.com/s/bjxjv7phkb8xfhh/commons-net-3.1.jar. Этого достаточно, чтобы получить время от интернета )

2.Запустить программу. Вы получите время, напечатанное на консоли.

вот метод, который я создал для вас вы можете использовать это в коде

вам нужно будет иметь доступ к веб-сервису, который предоставляет текущее время в формате XML или JSON.

Если вы не найдете такой тип сервиса, вы можете проанализировать время с веб-страницы, например http://www.timeanddate.com/worldclock/, или разместить свой собственный сервис времени на сервере, используя простую страницу PHP, например.

Проверьте JSoup для разбора HTML-страниц.

Я считаю, что Android использует SNTP для автоматического обновления даты/времени, когда сотовая сеть недоступна (например, wifi таблетки).

Я думаю, что это лучше, чем другие решения, потому что он использует SNTP / NTP, а не время протокол (RFC 868), используемый Apache TimeTCPClient. Я не знаю ничего плохого о RFC 868, но NTP является более новым и, похоже, его заменил и более широко используется. Я считаю, что Android-устройства, которые не имеют сотовой связи, используют NTP.

также, потому что он использует сокеты. Некоторые из предлагаемых решений используют HTTP, поэтому они потеряют что-то в своей точности.

ничего из вышеперечисленного не сработало со мной. Это то, что я закончил (с залпом);
Этот пример также преобразуется в другой часовой пояс.

импорт залпа в gradle:

Если вы не заботитесь о миллисекундной точности, и если вы уже используете Google firebase или не возражаете использовать его (они предоставляют бесплатный уровень), проверьте это: https://firebase.google.com/docs/database/android/offline-capabilities#clock-skew

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

Как я уже сказал, он будет быть неточным на основе задержки сети.

Источник

Изучите Java для разработки под Android: основы даты и времени

В этом руководстве вы научитесь работать с датами и временем в Java и в приложениях Android. Данные о дате и времени могут быть определены, изменены и сохранены различными способами.

Приложения Android написаны на Java, языке программирования. В Java есть несколько примитивных типов данных для различных типов чисел (целые числа, числа с плавающей запятой и т. Д.), Логических значений и одиночных символов. Java также включает в себя множество классов для хранения, форматирования и изменения данных даты и времени для использования в ваших приложениях Android. В этом руководстве вы узнаете, как определить текущую дату и время, сохранить данные о дате и времени и отобразить их несколькими способами.

Что вам нужно

Технически, вам не нужны никакие инструменты для завершения этого урока, но вам, безусловно, они понадобятся для разработки приложений для Android.

Читайте также:  Как удалять хвосты с андроид

Для разработки приложений Android (или любых других приложений Java) вам необходима среда разработки для написания и создания приложений. Eclipse — это очень популярная среда разработки (IDE) для Java и предпочтительная IDE для разработки под Android. Он свободно доступен для операционных систем Windows, Mac и Linux.

Полные инструкции по установке Eclipse (включая поддерживаемые версии) и Android SDK см. На веб-сайте разработчиков Android .

Что такое дата или время, правда?

Перво-наперво: дата и время — это две части одного и того же фрагмента данных (момент времени). Когда дело доходит до хранения даты и времени на компьютере, может быть полезно вспомнить ваш первый компьютерный класс и вспомнить, что все данные на компьютере состоят из «единиц и нулей». Компьютеры (и устройства Android не являются исключением) на самом деле не имеют ощущения времени, как люди, но вместо этого сохраняют числовое представление текущей даты или времени (всегда тикают вперед, по одной миллисекунде за раз), а затем форматируют эту информацию в различные способы удовлетворить конкретные цели. В конце концов, один момент времени интерпретируется по-разному в зависимости от вашего часового пояса или местоположения, признаете ли вы (или ваш район) переход на летнее время и различные другие факторы.

Добавьте к этому тот факт, что даты и время отображаются по-разному в разных культурах и регионах. Например, в Соединенных Штатах мы часто форматируем наши даты следующим образом: 6 апреля 1981 г. или 04/06/1981, тогда как в Европе день обычно предшествует месяцу, например: 6 апреля 1981 г. или 06/04 / 1981. Аналогичным образом, в некоторых странах существует концепция AM и PM с 12-часовым режимом, тогда как в других просто используются 24-часовые часы.

Компьютеры, включая устройства Android, рассчитывают время и дату как одно число (длинное), которое увеличивается с течением времени. Само число соответствует количеству миллисекунд, прошедших с определенной даты в прошлом. В этом случае момент времени, в который начало отсчитываться «время», это: полночь, 1 января 1970 года. Этот механизм называется временем Unix или временем POSIX .

Что делать разработчику?

Поп-викторина! Какая из следующих строк правильно представляет 4-й месяц (григорианского) календарного года: A, апрель, апрель, апрель, 4 или 04? Ответ? Все они. Работа с датами и временем уже кажется немного сложной, не так ли? На самом деле, мы быстро просмотрели все справочники по Java в нашем офисе (не так уж существенно) и очень мало освещали даты и время каким-либо существенным образом. Но не паникуйте. Просто примите тот факт, что, как разработчик, вам придется приложить немного усилий для достижения двух целей:

1. Ваша внешняя цель: позволить пользователю работать с форматами даты и времени, которые ему наиболее удобны или, по крайней мере, знакомы.
2. Ваша внутренняя цель: сохранить код приложения независимым от формата, чтобы он работал везде без особых хлопот.

Теперь давайте немного поговорим о каждой из этих целей.

Внешняя цель: быть гибким и использовать стандартные элементы управления

Вы когда-нибудь замечали, что несколько туристических сайтов позволяют пользователю вручную вводить информацию о дате или времени? Вместо этого они полагаются на средства выбора календаря и выпадающие списки с фиксированным днем, месяцем и годом или, как минимум, применяют определенный формат даты (обычно привязанный к вашему языку / стране, который они запрашивают заранее). С точки зрения пользовательского интерфейса, ваши приложения должны учитывать нюансы даты и времени, по крайней мере, до некоторой степени. Тем не менее, вы также должны внимательно рассмотреть методы, с помощью которых пользователь может вводить информацию о дате и времени. Используя стандартные средства выбора даты и времени в своих приложениях для Android, такие как DatePicker и TimePicker, вы эффективно ограничиваете ввод данных, которые пользователи могут вводить, тем, что может быть легко преобразовано в соответствующие структуры даты и времени, без необходимости разбора всех известных форматов (не для упомянуть его опечатки).

Внутренняя цель: сохранить свои даты и время родовыми

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

В Java даты и время хранятся несколькими способами, в зависимости от ваших требований.

Источник

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