— Я вспомнил, что хотел рассказать тебе немного про работу с датами.
— Так вы мне уже рассказывали, что в 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 = new 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, буду знать.
— Пользуйся на здоровье. И, удачи!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ