Вступление
Java предоставляет обширный API для обработки даты и времени. В этой статье мы будем использовать Java SimpleDateFormat для форматирования дат.
Перед форматированием дат вам нужно знать, как получить текущую дату и время в Java .
Спецификаторы формата
Спецификаторы формата даты и времени используются для построения шаблонов для представления данных в формате, в котором мы хотели бы их представить.
В реальном мире некоторые компоненты даты или времени часто представлены более чем одним способом. Когда дело доходит до спецификаторов формата времени и даты в Java, эти компоненты также имеют два или более представлений - иногда удобно использовать короткую версию, в то время как более длинные версии более краткие и официальные.
SimpleDateFormat
SimpleDateFormat
работает только с Date
и. В Java 8 добавлено
несколько других классов для замены существующего API даты и времени,
поэтому нет ничего необычного в том, что при обработке объектов Date
Создать SimpleDateFormat
довольно просто. Конструктор принимает
строковый шаблон:
SimpleDateFormat formatter = new SimpleDateFormat("EEE, MMM dd. yyyy.");
Стоит отметить, что если мы вызываем конструктор без аргументов, объект форматирования будет создан с шаблоном по умолчанию:
MM/dd/yy, H:mm aa
Если мы изменим наше мнение о шаблоне позже, мы всегда сможем применить другой к объекту, который мы создали ранее, и старый будет отменен:
formatter.applyPattern("'date': yyyy.MM.dd -- 'time': H:mm:ss");
Примечание: в этом шаблоне мы хотели, чтобы некоторые слова интерпретировались буквально, поэтому мы использовали одинарные кавычки.
Для краткости мы поместили Правила форматирования в конце статьи, если вы с ними не знакомы.
Форматирование System.currentTimeMillis ()
Форматировать количество миллисекунд, прошедших с эпохи UNIX, а именно 1 января 1970 г., 00:00:00 GMT , довольно просто:
SimpleDateFormat formatter = new SimpleDateFormat("EEE, MMM dd. yyyy. -- H:mm aa");
String formatted = formatter.format(System.currentTimeMillis());
System.out.println(formatted);
Выполнение этого фрагмента кода дает:
Tue, Aug 11. 2020. -- 4:48 AM
Внутренне long
значение преобразуется в Date
.
Форматирование java.util.Date
Форматирование Date
практически такое же, хотя мы сами предоставляем
экземпляр Date
SimpleDateFormat formatter = new SimpleDateFormat("EEE, MMM dd. yyyy. -- H:mm aa");
Date date = new Date();
String formatted = formatter.format(date);
System.out.println(formatted);
Результат:
Tue, Aug 11. 2020. -- 4:52 AM
Форматирование java.util.Calendar
Использование Calendar
упрощает настройку дат и экспериментирование с
ними. Если какая-то важная временная метка требует выделения, это легко
сделать с помощью Calendar
:
SimpleDateFormat formatter = new SimpleDateFormat("EEE, MMM dd. yyyy. -- H:mm aa");
Calendar calendar = Calendar.getInstance();
calendar.set(1969, Calendar.AUGUST, 15, 17, 35, 27);
# SimpleDateFormat works with Dates
Date date = calendar.getTime();
String formatted = formatter.format(date);
System.out.println(formatted);
Результат:
Fri, Aug 15. 1969. -- 17:35 PM
Правила форматирования
Для ясности, если вы еще не знакомы с правилами / шаблонами форматирования, используемыми в статье, вот список наиболее часто используемых спецификаторов формата:
Персонаж Компонент даты Тип содержимого Пример или времени
Г / г Год Год 1969; 69
M Месяц в году Месяц Август; Август; 08
ш Неделя в году Число 21 год
W Неделя в месяц Число 2
d День в месяце Число 07; 15
D День в году Число 176
F День недели в Число 2; 3
месяце\
(например, второй
вторник в этом
месяце)
E Название дня Текст Понедельник; пн недели
ты Номер дня недели\ Число 1 (Понедельник = 1)
а Маркер am / pm Текст ДО ПОЛУДНЯ, ПОСЛЕ ПОЛУДНЯ
час Час в am / pm Число 12 (1-12)
ЧАС Час в день (0-23) Число 0
k Час в день (1-24) Число 24
K Час в am / pm Число 0 (0-11)
м Минута в час Число 43 год
s Секунда в минуту Число 58
S Милисекунда в Число 965 секунду
z Часовой пояс Часовой пояс CEST; GMT-08: 00
грамм Обозначение эпохи Текст ОБЪЯВЛЕНИЕ
Каждый тип контента следует определенным правилам, главным образом в отношении количества символов шаблона, используемых в шаблоне форматирования:
- Год - если
Calendar
форматтера является григорианским и количество символов шаблона равно 2, год усекается до двух крайних правых цифр, в противном случае он интерпретируется как число. В других календарях применяются специальные формы для календаря. - Месяц - если количество символов шаблона составляет 3 или более, месяц отображается в виде текста; в противном случае это отображается как число. Доступны краткие и полные текстовые формы - если количество символов шаблона равно 4 или более, отображается полная форма; в противном случае отображается короткий.
- Число - количество символов шаблона - это минимальное количество цифр. Если это число больше, чем количество цифр, которые нам действительно нужны для представления числа, тогда к числу добавляется префикс с соответствующим количеством нулей.
- Текст - если количество символов шаблона равно 4 или более, используется полная форма; в противном случае используется краткая или сокращенная форма, если таковая имеется.
- Часовой пояс - они отображаются в виде текста, если у них есть имена. Доступны краткая и полная форма - если количество символов шаблона равно 4 или более, отображается полная форма; в противном случае отображается короткий. У некоторых часовых поясов нет имен, и они могут отображаться в различных формах, одна из которых, например, значение смещения по Гринвичу.
Вот несколько примеров шаблонов и результатов, которые они дают:
Шаблон даты и времени Результат "EEEE, MMM дд. Yyyy. - H: mm aa zzzz" Пятница, 15 августа 1969 г. - 17:35 по центральноевропейскому стандартному времени. "EEE, MMM дд. Yyyy. - H: mm aa zz" Пт, 15 августа 1969. - 17:35 CET «ММММ гггг. GGGG» Сентябрь 0200 г. н.э. "МММ ггг. ГГ" Сентябрь 200 г. н.э. «ММ-дд-гггг ЧЧ: мм: сс: SSSS» 09-15-2020 17: 35: 27: 0953
Заключение
В этой статье мы рассмотрели SimpleDateFormat
и то, как мы можем
использовать его для форматирования дат.
Мы отформатировали текущее время (в миллисекундах) с начала времени
UNIX, обычного объекта Date
Calendar
.
Наконец, мы рассмотрели спецификаторы форматирования и правила
форматирования, применяемые к результатам SimpleDateFormat