Преглед садржаја
Рад са датумима одувек је био прекретница у каријери програмера. То је делимично зато што је у ранијим верзијама Јава било је помало збуњујуће и недоследно. Међутим, у новој верзији а АПИ то нам омогућава да извучемо максимум из језика јаснијим и лакшим методама.Ово чини рад са формати датума и времена у Јава не мучите се. За ово морамо проучити нове облике и могућности које нам језик пружа, с циљем да једну од тачака која изазива највећу забуну, претворимо у нешто чиме правилно овладамо.
Да би поједноставио рад, развојни тим Јава нам је пружио низ уобичајених метода које можемо користити, како у раду датуми, као кад радимо сати. То смањује напор учења због сличног понашања за обје врсте објеката.
У наставку ћемо навести неке од метода које се највише истичу заједно са малим објашњењем за шта их можемо користити, с тим можемо имати општу идеју када касније пређемо на практични део.
атОва метода нам омогућава да направимо комбинацију објекта који га дозива са другим објектом.
форматОмогућава нам да помоћу неких параметара произведемо као резултат датум или време у одређеном формату који нам је потребан.
добитиОмогућава нам да добијемо елемент који наведемо.
јеОмогућава нам да потврдимо да ли је објекат типа са којим правимо поређење.
плусТо нам даје могућност додавања додатка објекту који га позива и враћа његову копију са већ додатом вредношћу.
доОмогућава нам да направимо конверзију из једне врсте у другу.
Сада са овим знањем можемо прећи на друга питања у оквиру исте теме о датумима и временима у Јава.
Као што смо објашњавали облике који се користе у Јава Сада су се променили за нову верзију, зато за понављање примера које ћемо дати потребна нам је верзија 8 комплета за развој језика, у супротном ћемо добити грешку попут ове:
За ово ћемо створити класу у којој ћемо инстанцирати објекте тог типа ЛоцалДате, Локално време И ЛоцалДатеТиме. Сваки од њих ће нам дати тренутни датум, тренутно време и тренутни датум и време.
Ово је веома корисно у таквим случајевима системске евиденције, где морамо ухватити тачан тренутак у коме се радња предузима или се догађа догађај који желимо да забележимо. Да бисмо постигли циљ, можемо направити код сличан следећем:
импорт јава.тиме. *; јавна класа ЦуррентДате {публиц статиц воид маин (Стринг [] аргс) {ЛоцалДате цуррентДате = ЛоцалДате.нов (); Систем.оут.принтлн (цуррентДате); ЛоцалТиме цуррентТиме = ЛоцалТиме.нов (); Систем.оут.принтлн (цуррентТиме); ЛоцалДатеТиме нов = ЛоцалДатеТиме.нов (); Систем.оут.принтлн (сада); }}
Као што видимо, све што радимо је да декларишемо наше објекте горе наведених типова и доделимо им вредност која се враћа методом Сада (), који је заиста задужен за давање тренутног датума и времена, тада бринемо само о штампању сваког од декларисаних објеката.
ВажноВеома је важно укључити пакет јава.тиме у целини, тако да можемо приступити свим функцијама које користимо, такође ако сумњамо у службену документацију, можемо пронаћи више детаља о опцијама исте.
Да видимо како изгледа извршавање нашег програма:
У зависности од апликације коју развијамо, желећемо да прикажемо месец по броју у календару или по имену, али назив може бити потпун или скраћен, као и дан или година, све то нам даје веома велики број опција, све подједнако важеће. Да бисмо решили овај проблем, можемо користити обликовач датума.
За обликовање датума имамо неке замјенске знакове или параметре који нам омогућавају да добијемо вриједности објашњене у претходном параграфу. Да видимо који су најважнији.
- И, омогућава нам приступ години у четвороцифреном или двоцифреном формату (2014 или 14).
- Д., омогућава нам да добијемо број дана у години (225).
- д, За разлику од претходног, враћа број дана у дотичном месецу (27).
- Л, помаже нам да добијемо мјесец у години у бројчаном облику, М. даје нам месец у тексту.
- Х., даје нам времена.
- с, даје нам секунде.
- м, омогућава нам да добијемо записник.
- до, даје нам ам или пм сата.
- з, омогућава нам приступ имену временске зоне.
импорт јава.тиме. *; импорт јава.тиме.формат. *; јавна класа ДатеФорматтер {публиц статиц воид маин (Стринг [] аргс) {ДатеТимеФорматтер форматиран дате = ДатеТимеФорматтер.офПаттерн ("гггг / ЛЛ / дд"); Систем.оут.принтлн (ФорматтедДате.формат (ЛоцалДате.нов ())); Систем.оут.принтлн (ЛоцалДате.парсе ("2014/11/15", Форматиран датум)); ДатеТимеФорматтер тимезоне = ДатеТимеФорматтер.офПаттерн ("д ММММ, гггг х: мм а"); Систем.оут.принтлн (ЗонедДатеТиме.нов (). Формат (временска зона)); }}
Прва ствар коју можемо истакнути је да морамо увести оба пакета јава.тиме са свим својим класама као пакетом јава.тиме.формат са свим његовим часовима. Вежбу је могуће извести увозом одређених часова, али то остављамо као домаћи задатак, па и они имају задатак да погледају званичну документацију.
Затим видимо да стварамо објекат типа ДатеТимеФорматтер и користимо метод офПаттерн () који прихвата наведене џокере, видимо да их постављамо у дупликатима као гггг да бисте добили четири цифре текуће године или такође мм да бисте добили две цифре минута.
На крају одштампамо сваки датум са његовим форматима и добијемо следеће када извршимо наш програм:
Још једна употреба коју можемо дати новим класама датума и времена Јава је да будете у могућности да користите датуме који долазе из текстуалног низа, може их креирати корисник, долазе из текстуалне датотеке итд. Али важно је да морамо њима манипулисати и за то можемо користити све алате које имамо при руци.
Погледајмо у следећем коду како, користећи оно што смо видели, можемо да променимо датум из текстуалног низа.
импорт јава.тиме. *; импорт јава.тиме.формат. *; јавна класа СтатицДате {публиц статиц воид маин (Стринг [] аргс) {Стринг СтартДате = "1906-12-31"; ЛоцалДате такенДате = ЛоцалДате.парсе (стартДате); Систем.оут.принтлн ("Датум:" + ТакенДате); Стринг датеСтартТиме = "1906-12-31Т12: 05"; ЛоцалДатеТиме ТакенДатеТиме = ЛоцалДатеТиме.парсе (ТимеИнитиалДате); Систем.оут.принтлн ("Датум / време:" + датумТакТиме); ДатеТимеФорматтер дф = ДатеТимеФорматтер.офПаттерн ("дд МММ уууу"); Систем.оут.принтлн (ТакенДате + "Са новим форматом:" + дф.формат (ТакенДате)); }}
У коду видимо како стварамо почетни датум у текстуалном низу, а затим са објектом типа ЛоцалДате користимо метод Парсе да бисмо инкорпорирали текстуални низ у објекат типа датума, онда одштампамо објекат и видимо да ако је датум правилно прошао, понављамо исти поступак, али користећи датум и време са ЛоцалДатеТиме.
Коначно, узимамо наш први створени објект и на њега примјењујемо нови формат, чиме потврђујемо да смо успјели унијети и манипулирати датумом који смо одредили из текстуалног низа. Хајде да видимо како то изгледа када покренемо наш програм: