Меню Закрыть

Получить текущую дату android

Содержание

Класс 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 и позволяет определять собственные шаблоны форматирования для отображения даты и времени.

Читайте также:  Windows search не запускается

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

  • 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. В первом случае будет отображаться ноль перед цифрой.

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

0 Allda [2012-08-07 08:49:00]

Я создаю приложение для Android, и я хочу показать текущую дату на экране. Я использую этот код:

Но этот код показал мне дату "1.1.1970".

Как показать текущую дату?

java android date

8 ответов

4 Heinzi [2012-08-07 08:53:00]

публичная дата (длинные миллисекунды)

Инициализирует экземпляр этой даты с использованием указанного значения в миллисекундах. Значение — миллисекунды с 1 января 1970 г. по Гринвичу.

Чтобы получить текущую дату, используйте Date() , конструктор без параметра:

Инициализирует экземпляр этой даты до текущего времени.

2 Pinki [2012-08-07 08:53:00]

Чтобы показать текущую дату на экране, сделайте это..

String s = new SimpleDateFormat("dd-MM-YYYY").format(new Date());

Теперь отобразите строку s на экране.

1 npinti [2012-08-07 08:54:00]

Просто удалите 0 , поэтому замените это: Date date = new Date(0); следующим образом: Date date = new Date();

Инициализирует экземпляр этой даты с использованием указанного значения в миллисекундах. Значение — миллисекунды с 1 января 1970 г. по Гринвичу.

Поскольку вы передали значение 0, оно принимало вышеуказанную дату и добавляло к ней 0 миллисекунд, поэтому причина, по которой вы получили дату 1.1.1970 .

1 Ram kiran [2012-08-07 08:52:00]

Результат будет ========>> 2012-08-07

Не используйте новую дату (0). Параметр — это время с эпохи, которое составляет 1.1.1970. Просто используйте новую дату().

Читайте также:  Мбм 160v содержание драгметаллов

0 Neil M. [2014-11-06 00:42:00]

Убедитесь, что вы импортируете файл java.util.Date; а не "java.sql.Date"; или иначе вы не сможете пройти ни один параметр.

new Date() достаточно, иначе вы получите дату 0 секунд после 01.01.1970 00:00:00, если вы вызываете new Date(0)

В приложении нужно в два отдельных textview вывести дату и время. Я уже перепробовал все что смог найти на просторах интернета, например:

и еще много разных примеров, и как результат — у меня либо не выводит ничего в textview или слетает приложение, как ошибку выводит например проблемы с грегорианским календарем или еще что-то в этом роде, ну то есть показывает что проблема в каком глубоком классе, который отвечает за ту функцию что я вызываю, а я не хочу влезать в те классы так как не я их создавал и могу нарушить их работу своим вмешательством. Если кто-то сталкивался с подобными проблемами или знает как решить мою то буду благодарен за помощь.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.