Дата и время в Java

Дата, время и их форматы в Java

Получить в Java текущую дату можно так:

Date currentDate = new Date();
System.out.println(«Date currentDate = » + currentDate);

Получим (дата Java, время Java):

Date currentDate = Sat May 02 14:11:31 MSD 2009

Форматирование даты и времени в Java см. ниже.

Как задать другую, не текущую, дату в Java? Получим вчерашнюю дату:

currentDate = new Date();
Long time = currentDate.getTime();
long anotherDate = -1;
time = time + (60*60*24*1000*anotherDate);
currentDate = new Date(time);
System.out.println(«Date currentDate = » + currentDate);

Результат (дата Java, время Java):

Date currentDate = Fri May 01 14:15:21 MSD 2009

Получить дату в Java с помощью GregorianCalendar:

GregorianCalendar calen = new GregorianCalendar(2009, 4, 2);
System.out.println(«currentDate = » + calen.getTime());

Результат:

currentDate = Sat May 02 00:00:00 MSD 2009

Класс DateFormat

Форматируем дату и время в Java с помощью класса DateFormat. Это предустановленное форматирование для данной локали.

Как создать русскую локаль?

Locale local = new Locale(«ru»,»RU»);

Форматируем дату:

DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, local);
currentDate = new Date();
System.out.println(«currentDate = » + df.format(currentDate));

Результат:

currentDate = 02.05.2009

Установим DateFormat.LONG:

DateFormat df = DateFormat.getDateInstance(DateFormat.LONG , local);
currentDate = new Date();
System.out.println(«currentDate = » + df.format(currentDate));

Результат:

currentDate = 2 Май 2009 г.

Форматируем Время в Java с помощью предустановленного формата

DateFormat df = DateFormat.getTimeInstance(DateFormat.DEFAULT, local);
currentDate = new Date();
System.out.println(«currentTime = » + df.format(currentDate));

Результат:

currentTime = 19:51:50

Форматируем дату и время с помощью предустановленного формата:

DateFormat df = DateFormat.getDateTimeInstance (DateFormat.DEFAULT,DateFormat.DEFAULT,local);
currentDate = new Date();
System.out.println(«currentDateTime = » + df.format(currentDate));

Результат:

currentDateTime = 02.05.2009 19:56:15

Класс SimpleDateFormat

Можно самому определить порядок форматирования с помощью класса SimpleDateFormat.

Пример (год кратко):

SimpleDateFormat sdf = new SimpleDateFormat(«dd.MM.yyг.»);
currentDate = new Date();
System.out.println(«currentDate = » + sdf.format(currentDate));

Результат:

currentDate = 02.05.09г.

Пример (год полный):

SimpleDateFormat sdf = new SimpleDateFormat(«dd.MM.yyyyг.»);
currentDate = new Date();
System.out.println(«currentDate = » + sdf.format(currentDate));

Результат:

currentDate = 02.05.2009г.

Пример (месяц прописью):

SimpleDateFormat sdf = new SimpleDateFormat(«d MMM yyyyг.»);
currentDate = new Date();
System.out.println(«currentDate = » + sdf.format(currentDate));

Результат:

currentDate = 2 май 2009г.

Форматируем дату и время:

SimpleDateFormat sdf = new SimpleDateFormat(«dd.MM.yy HH:mm:ss»);
currentDate = new Date();
System.out.println(«currentDate = » + sdf.format(currentDate));

Результат:

currentDateTime = 02.05.09 20:21:39

Если в формате часов поставить маленькие буквы hh, т.е. hh:mm:ss, то получим:

currentDateTime = 02.05.09 08:24:24

здесь 08 вместо 20 часов.

Класс DateFormatSymbols

Чтобы названия месяцев были в родительном падеже используем класс DateFormatSymbols:

Результат:

currentDateTime = 2 мая 2009 года

Класс MaskFormatter

Самое важное, что нужно знать про класс MaskFormatter, так это то, что форматирует он только СТРОКИ. Если надо форматировать дату, от даты переходим к строке, а уж строку форматируем MaskFormatter-ом. Пример:

Если установить:

mf.setPlaceholderCharacter(‘_’);

то отсутствующие символы заменяются знаком подчёркивания.

Класс GregorianCalendar

Полезно знать класс GregorianCalendar при работе с датами. Класс GregorianCalendar расширяет класс Calendar в Java.

Создать объект GregorianCalendar для 27.04.2008 14:30:59:

GregorianCalendar calen = new GregorianCalendar(2008, 3, 27, 14, 30, 59);

Установить дату и время в объект GregorianCalendar:

Соответствующими методами get получаем элементы даты:

calen.get(calen.DATE);//и др.

Прибавить/вычесть к дате дни можно методом add:

Другая возможность изменять дату — метод roll:

Проверим високосный ли год методом isLeapYear:

Получаем:

GregorianCalendar

Скачать GregorianCalendar пример (6 КБ).