— Я згадав, що хотів розповісти тобі трохи про роботу з датами.
— Так ви мені вже розповідали, що Java існує клас Date, за допомогою якого можна працювати з датою.
— Гм. З деякого часу клас Date застарів.
Зараз замість нього радять використовувати клас Calendar, який має метод getTime(), який і повертає поточну дату.
Ось як зазвичай створюється об'єкт типу Календар:
Calendar cal = Calendar.getInstance();
— Коли ти викликаєш цей метод, залежно від налаштувань твого комп'ютера, буде створено календар.
— Потрібний? Їх що кілька?
— Ага. Більше того, правильно було б сказати актуальний. Справа в тому, що на Землі не один, а багато календарів. І майже кожен із них пов'язаний з якоюсь релігією чи країною.
Залежно від того, в якій країні ти перебуваєш, рік може бути іншим.
Ось приклади найпоширеніших календарів.
Клас календаря | Назва календаря |
---|---|
GregorianCalendar | Християнський Грегоріанський календар |
BuddhistCalendar | Буддистський календар |
JapaneseImperialCalendar | Японський Імператорський календар |
Є ще Китайський календар, Ісламський календар та багато інших.
— Ясно.
— Щоб дізнатися про поточну дату, треба написати такий код:
Calendar cal = Calendar.getInstance() ;
Date date = cal.getTime();
У класу календар є багато методів, які дозволяють швидко отримати будь-яку інформацію про дату та час.
Код | Коментарі |
---|---|
|
ера рік місяць день місяця день тижня (пн, вт, ср...) година хвилина секунда |
Іноді дійсно потрібно отримати лише частину інформації. Наприклад, який сьогодні рік, чи якийсь день тижня.
Але іноді потрібно просто вивести дату в потрібному форматі.
Наприклад, у лог-файл або ще кудись.
Або зробити формат, який налаштовував би користувач. Як тоді бути?
Для цього також є спеціальні класи. І клас SimpleDateFormat відмінно справляється з описаним тобою завданням:
Calendar calendar = Calendar.getInstance();
DateFormat formatter = новий SimpleDateFormat("MM-DD-YY");
String message = formatter.format(calendar.getTime());
— Ага. Я пам'ятаю. Ви мені вже щось таке пояснювали проSimpleDateFormat, але я чесно кажучи, не дуже запам'ятав.
Тут все дуже просто. Створюєш об'єкт типу SimpleDateFormat і передаєш у нього шаблон дати, яку хочеш отримати. Потім викликаєш метод format, і він наводить тобі передану дату до потрібного вигляду.
— Звучить цікаво. Мені б більше подробиць.
— Будуть тобі подробиці. Ось які ключові слова у шаблоні бувають:
Ключове слово | Опис |
---|---|
G | замінять на еру дати (н.е. або до н.е.) |
y | замість цього символу буде встановлено рік |
M | замінюється на місяць |
w | номер тижня на рік |
W | порядковий номер тижня на місяць |
D | номер дня на рік |
d | день місяця |
F | номер дня тижня на місяці |
E | день тижня |
a | AM/PM (до обіду чи після) |
H | година у 24-годинному форматі (0-23) |
k | година у 24-годинному форматі (1-24) |
K | година у 12-годинному форматі (0-11) |
h | година у 12-годинному форматі (1-12) |
m | хвилини |
s | секунди |
S | мілісекунди |
z | годинна зона у форматі Pacific Standard Time, PST |
Z | годинна зона у форматі -0800 |
— Круто! Майже все, що потрібно.
— Тут ще є додаткові нюанси із подвоєнням цих символів.
Якщо ти напишеш YY, то отримаєш дві останні цифри року, якщо YYYY – то повний рік із чотирьох цифр.
З місяцем теж не все просто. MM – це число місяця. MMM - це трилітерне скорочення місяця (Jan, Feb, Mar, Apr, May, ...). Якщо MMMM – повна назва місяця.
Дні тижня можна також вивести повністю - EEEE або тільки перші дві літери EE.
— Дякую, Ріша, справді корисна штука цей SimpleDateFormat, знатиму.
— Користуйся здоров'ям. І, удачі!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ