Работа с датой и временем
Данные типа дата/время приходится обрабатывать довольно часто, поэтому все современные языки программирования предлагают удобный механизм для работы с ними в одной из своих библиотек.
В Java для этих целей разработаны классы Date и Calendar, собранные в пакете java.util.
Класс Date хранит число миллисекунд, прошедших с 1 января 1970 года (во внутреннем поле, имеющем тип long). Конструктор без параметров этого класса создает объект, содержащий текущее время (по системным часам машины, на которой выполняется программа). Другой конструктор, с параметром типа long, создает объект Date на основе заданного числа.
Метод getTime() позволяет получить это число, а метод setTime(long newTime) – изменить.
Для отображения даты на экране ее внутреннее представление необходимо перевести в строку, более удобную для восприятия. Для этого обычно используется класс SimpleDateFormat (являющийся наследником абстрактного класса DateFormat), который надо импортировать из пакета java.text. Прежде всего необходимо создать объект этого класса, указав в качестве параметра конструктора строку, определяющую способ форматирования. Например:
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy hh:mm");
Теперь следует вызвать метод format() созданного форматирующего объекта, передав ему в качестве параметра тот объект Date, который необходимо представить в виде строки. Чтобы вывести на экран текущую дату, необходимо использовать команду:
System.out.println(formatter.format(new Date()));
В момент написания этих строк программа вывела в консоль
25.02.2016 01:25
В строке "dd.MM.yyyy hh:mm" dd означает цифры дня, MM – цифры месяца, yyyy – цифры года, hh – часы и mm – минуты. Комбинация MMMM дала бы название месяца (в именительном падеже), а yy – только две последние цифры года. Названные составляющие могут следовать в любом порядке (причем, все они присутствовать не обязаны), а разделители между ними (в примере это точка, пробел и двоеточие) могут быть и другими.
Класс Calendar позволяет работать с датой на более высоком уровне, отдельно рассматривая составляющие даты (число, месяц, год и т.д.). Он является абстрактным, поэтому необходимо пользоваться одним из его наследников. Таковым является GregorianCalendar (описывающий грегорианский календарь).
Создать объект этого класса, содержащий текущую дату/время можно конструктором без параметров. Всего же у класса GregorianCalendar семь конструкторов, наиболее мощный из них принимает шесть параметров:
GregorianCalendar(int year, int month, int day, int hour, int minutes, int seconds)
Получить любую часть даты можно с помощью универсального метода get(int field). Целочисленный параметр field определяет желаемую часть даты.
В классе Calendar определены константы, описывающие возможные варианты: ERA, YEAR, MONTH, WEEK_OF_YEAR, WEEK_OF_MONTH, DAY_OF_YEAR, DAY_OF_MONTH, DAY_OF_WEEK, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND и несколько других.
Например, можно узнать, какой сегодня день года:
GregorianCalendar today = new GregorianCalendar();
int result = today.get(Calendar.DAY_OF_YEAR);
System.out.println(result);
Любую часть даты можно изменить методом set(int field, int value).
Дата добавления: 2017-01-26; просмотров: 1485;