Дата і час в 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.getDateInstance(DateFormat.LONG , 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.ММ.yyр.");
currentDate = new Date();
System.out.println("currentDate = " + sdf.format(currentDate));

Результат:

currentDate = 02.05.09 р.

Приклад (рік повний):

SimpleDateFormat sdf = new SimpleDateFormat("dd.ММ.yyyyр.");
currentDate = new Date();
System.out.println("currentDate = " + sdf.format(currentDate));

Результат:

currentDate = 02.05.2009 р.

Приклад (місяць літерами):

SimpleDateFormat sdf = new SimpleDateFormat("d МММ yyyyр.");
currentDate = new Date();
System.out.println("currentDate = " + sdf.format(currentDate));

Результат:

currentDate = 2 травень 2009р.

Форматуємо дату та час:

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

Результат:

currentDateTime = 02.05.09 20:21:39

Якщо у форматі годин поставити маленькі літери hh, тобто чч:мм:сс, то отримаємо:

currentDateTime = 02.05.09 08:24:24

тут 08 замість 20 годин.

Вгору

Клас DateFormatSymbols

Щоб назви місяців були в родовому відмінку використовуємо клас DateFormatSymbols:

Результат:

currentDateTime = 2 травня 2009 року
Вгору

Клас MaskFormatter

найважливіше, що потрібно знати про клас MaskFormatter, так це те, що він форматує тільки РЯДКИ. Якщо треба форматувати дату, від дати переходимо до рядку, а вже форматуємо рядок MaskFormatter-му. Приклад:

Якщо встановити:

mf.setPlaceholderCharacter('_');

то відсутні символи замінюються знаком підкреслення.

Вгору

Клас GregorianCalendar

Корисно знати клас GregorianCalendar при роботі з датами. Клас GregorianCalendar розширює клас Календар в 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

такий результат.