1. Клас DateTimeFormatter
Специалният DateTimeFormatter
клас си проправя път в API за дата и час. Целта му е да направи възможно най-лесно за програмистите да конвертират дата и час в точния формат, който желаят. И ние сме щастливи да съобщим, че създателите на Java са успели.
Използването му е много лесно. Първо, трябва да създадете DateTimeFormatter
клас и да подадете модел, който указва How ще показва датата и часа:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Къде dtf
е DateTimeFormatter
променлива. е статичен метод на класа. А шаблонът е низ, който указва модела, който ще се използва за показване на датата и часа.DateTimeFormatter.ofPattern()
DateTimeFormatter
Примери
Код | Конзолен изход |
---|---|
|
|
В горния пример използваме ofPattern()
метода за създаване на DateTimeFormatter
обект въз основа на шаблона. И в следващия ред използваме format()
метода за преобразуване на LocalDateTime
обект в низ. Виждате резултата на екрана.
Можете да подадете почти всеки обект от API за дата и час към format()
метода.
Статиката ofPattern()
също е много проста: тя приема модел като аргумент и връща DateTimeFormatter
обект. Най-интересната част се намира в модела.
2. Шаблон за форматиране
Низът, предаден като шаблон, се използва като шаблон при показване на информация. MM се заменя с числото на месеца, dd с деня от месеца, а yy с числото на годината. Регистърът на буквите има meaning.
Пълната table за тези времеви модели е следната:
Писмо | Значение |
---|---|
г | година |
М | месец |
д | ден |
з | Часа |
м | Минути |
с | Секунди |
С | Хилядни от секундата |
н | Наносекунди. |
Не е особено трудно за запомняне.
Но защо моделът в примера включва повтарящи се букви MM, dd и yy? Е, тук става по-интересно.
Главна идея
Броят на буквите влияе върху дължината на текста. Колкото повече букви има, толкова по-дълъг ще бъде текстът.
Ако буквата H е посочена веднъж, тогава 9 часа ще бъдат показани като 9, но ако буквата H е посочена два пъти подред, тогава 9 часа ще бъдат показани като 09.
Ако буквата y е посочена 2 пъти подред, тогава годината се записва с 2 цифри. Ако се появи 4 пъти подред, тогава се използват 4 цифри.
Ако буквата М е посочена 2 пъти подред, тогава се изписва номерът на месеца. Ако 3 пъти подред, тогава се използва името на месеца (първите му 3 букви). Ако 4 пъти подред, тогава се използва пълното име на месеца.
Пример:
Код | Конзолен изход |
---|---|
|
|
3. Пълна table с модели
Пълната маса е доста голяма и супер интересна:
модел | Вариации на модела | Пример | Описание |
---|---|---|---|
г | yy, yyyy | 19; 2019 г | година |
М/Л | М, ММ, МММ, ММММ, МММММ | 1; 01; Ян; януари; Дж | месец |
д | г, дд | 9; 09 | ден |
з | H, HH | 2; 02 | Часа |
м | m, mm | 3; 03 | Минути |
с | s, ss | 5; 05 | Секунди |
С | S, SS, SSS, ... | 1; 12; 123 | Хилядни от секундата |
н | н | 123456789 | Наносекунди |
Ж | G, GGGG, GGGGG | AD; Anno Domini; А; | ера |
Q/q | q, qq, qqq, qqqq | 3; 03; Q3; 3-та четвърт | Квартал |
w | w | 13 | Седмица от годината |
У | У | 3 | Седмица от месеца |
д | ЕЕЕЕ, ЕЕЕЕ, ЕЕЕЕ | пн; понеделник; М | Ден от седмицата |
e/c | e, ee, eee, eeee, eeeee | 1; 01; пн; понеделник; М | Ден от седмицата |
а | а | PM | Сутрин or Следобед |
ч | ч | 12 | 12-часов часовник. |
V | VV | Европа/Хелзинки | Часова зона |
z | z zzzz | EET; Източноевропейско стандартно време | Часова зона |
О | О ОООО | GMT+2; GMT+02:00 | Часова зона |
Между другото, това всъщност не е пълната version. Можете да намерите най-пълната version тук .
4. Време за разбор
Класът DateTimeFormatter
също е интересен със способността си не само да преобразува дата и час в низ според даден модел, но и да извършва обратната операция!
Разборът на низ е процес на разделянето му на значими токени.
Ето How изглежда:
Код | Конзолен изход |
---|---|
|
|
Първо създаваме DateTimeFormatter
обект и задаваме модела, който се използва за анализиране.
След това извикваме метода LocalDate.parse()
or LocalTime.parse()
or LocalDateTime.parse()
и предаваме низа, който трябва да бъде анализиран заедно с DateTimeFormatter
обекта, който разбира How да анализира подавания текст и Howъв модел трябва да се използва за това.
Друг пример: този път ще анализираме времето.
Код | Конзолен изход |
---|---|
|
|
GO TO FULL VERSION