setDefault(TimeZone zone).
Класс
Класс Calendar — абстрактный, в нем собраны общие свойства большинства календарей: юлианского, григорианского, лунного. В Java API пока есть только одна его реализация — подкласс GregorianCalendar.
Поскольку Calendar — абстрактный класс, его экземпляры создаются четырьмя статическими методами по заданной локали и/или часовому поясу:
Calendar getInstance();
Calendar getInstance(Locale loc);
Calendar getInstance(TimeZone tz);
Calendar getInstance(TimeZone tz, Locale loc);
Для работы с месяцами определены целочисленные константы от January до December, а для работы с днями недели — константы от Monday до Sunday.
Первый день недели можно узнать методом int getFirstDayOfWeek(), а установить — методом setFirstDayOfWeek(int day), например:
setFirstDayOfWeek(Calendar.MONDAY);
Остальные методы позволяют просмотреть время и часовой пояс или установить их.
Метод get(int field) возвращает элемент календаря, заданный параметром field. Для этого параметра в классе Calendar определены следующие статические целочисленные
константы: | |||
ERA | WEEK OF YEAR | DAY OF WEEK | SECOND |
YEAR | WEEK OF MONTH | DAY OF WEEK IN MONTH | MILLISECOND |
MONTH | DAY OF YEAR | HOUR OF DAY | ZONE OFFSET |
DATE | DAY OF MONTH | MINUTE | DST_OFFSET |
Метод set (int field, int value), использующий эти константы, устанавливает соответствующие значения даты и времени, оставляя остальные значения без изменения. Еще |
несколько методов set () устанавливают дату и время по дням, часам, минутам и другим элементам.
Метод setTime(Date d), наиболее часто применяемый для заполнения календаря, устанавливает в календарь все элементы даты d полностью.
Подкласс
В григорианском календаре две целочисленные константы определяют эры: bc (Before Christ) и ad (Anno Domini).
Семь конструкторов определяют календарь по времени, часовому поясу и/или локали:
GregorianCalendar();
GregorianCalendar(int year, int month, int date);
GregorianCalendar(int year, int month, int date, int hour, int minute); GregorianCalendar(int year, int month, int date, int hour, int minute, int second); GregorianCalendar(Locale loc);
GregorianCalendar(TimeZone tz);
GregorianCalendar(TimeZone tz, Locale loc);
После создания объекта следует определить дату перехода с юлианского календаря на григорианский календарь методом setGregorianChange(Date date). По умолчанию это 15 октября 1582 г. На территории России переход на григорианский календарь был осуществлен 14 февраля 1918 г., значит, создание объекта greg надо выполнить так:
GregorianCalendar greg = new GregorianCalendar(); greg.setGregorianChange(new
GregorianCalendar(1918, Calendar.FEBRUARY, 14).getTime());
Узнать, является ли год високосным в григорианском календаре, можно логическим методом isLeapYear ().
Различные способы представления дат и показаний времени можно осуществить методами, собранными в абстрактный класс DateFormat и его подкласс SimpleDateFormat из пакета j ava. text.
Класс DateFormat предлагает четыре стиля представления даты и времени:
□ short — представляет дату и время в коротком числовом виде: 27.07.11 17:32; в локали США: 07/27/11 5:32 PM;
□ medium — задает год четырьмя цифрами и показывает секунды: 27.07.2011 17:32:45; в локали США месяц представляется тремя буквами;
□ long — представляет месяц словом и добавляет часовой пояс:
27 июль 2011 г. 17:32:45 GMT+03:00;
□ full — в русской локали таков же, как и стиль long; в локали США добавляется еще день недели.
Есть еще стиль default, совпадающий со стилем medium.
При создании объекта класса simpleDateFormat можно задать в конструкторе шаблон, определяющий какой-либо другой формат, например:
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh.mm");
System.out.println(sdf.format(new Date()));
Получим вывод в таком виде: 27-07-2011 17.32.
В шаблоне буква d означает цифру дня месяца, M — цифру месяца, y — цифру года, h — цифру часа, m — цифру минут. Полностью обозначения для шаблона указаны в документации по классу SimpleDateFormat.
Эти буквенные обозначения можно изменить с помощью класса DateFormatSymbols.
Не во всех локалях можно создать объект класса SimpleDateFormat. В таких случаях используются статические методы getinstance () класса DateFormat, возвращающие объект класса DateFormat. Параметрами этих методов служат стиль представления даты и времени и, может быть, локаль.
После создания объекта метод format() класса DateFormat возвращает строку с датой и временем, согласно заданному стилю. В качестве аргумента задается объект класса
Date.
Например:
System.out.println("LONG: " + DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.LONG).format(new Date()));
или