Рад са датумима у Јави 8

Преглед садржаја
Рад са датумима одувек је био прекретница у каријери програмера. То је делимично зато што је у ранијим верзијама Јава било је помало збуњујуће и недоследно. Међутим, у новој верзији а АПИ то нам омогућава да извучемо максимум из језика јаснијим и лакшим методама.
Ово чини рад са формати датума и времена у Јава не мучите се. За ово морамо проучити нове облике и могућности које нам језик пружа, с циљем да једну од тачака која изазива највећу забуну, претворимо у нешто чиме правилно овладамо.
Да би поједноставио рад, развојни тим Јава нам је пружио низ уобичајених метода које можемо користити, како у раду датуми, као кад радимо сати. То смањује напор учења због сличног понашања за обје врсте објеката.
У наставку ћемо навести неке од метода које се највише истичу заједно са малим објашњењем за шта их можемо користити, с тим можемо имати општу идеју када касније пређемо на практични део.
атОва метода нам омогућава да направимо комбинацију објекта који га дозива са другим објектом.
форматОмогућава нам да помоћу неких параметара произведемо као резултат датум или време у одређеном формату који нам је потребан.
добитиОмогућава нам да добијемо елемент који наведемо.
јеОмогућава нам да потврдимо да ли је објекат типа са којим правимо поређење.
плусТо нам даје могућност додавања додатка објекту који га позива и враћа његову копију са већ додатом вредношћу.
доОмогућава нам да направимо конверзију из једне врсте у другу.
Сада са овим знањем можемо прећи на друга питања у оквиру исте теме о датумима и временима у Јава.
Као што смо објашњавали облике који се користе у Јава Сада су се променили за нову верзију, зато за понављање примера које ћемо дати потребна нам је верзија 8 комплета за развој језика, у супротном ћемо добити грешку попут ове:

Разјаснили смо поенту, погледајмо испод шта морамо да урадимо да бисмо добили информације о тренутни датум и време на Јави.
За ово ћемо створити класу у којој ћемо инстанцирати објекте тог типа ЛоцалДате, Локално време И ЛоцалДатеТиме. Сваки од њих ће нам дати тренутни датум, тренутно време и тренутни датум и време.
Ово је веома корисно у таквим случајевима системске евиденције, где морамо ухватити тачан тренутак у коме се радња предузима или се догађа догађај који желимо да забележимо. Да бисмо постигли циљ, можемо направити код сличан следећем:
 импорт јава.тиме. *; јавна класа ЦуррентДате {публиц статиц воид маин (Стринг [] аргс) {ЛоцалДате цуррентДате = ЛоцалДате.нов (); Систем.оут.принтлн (цуррентДате); ЛоцалТиме цуррентТиме = ЛоцалТиме.нов (); Систем.оут.принтлн (цуррентТиме); ЛоцалДатеТиме нов = ЛоцалДатеТиме.нов (); Систем.оут.принтлн (сада); }} 

Као што видимо, све што радимо је да декларишемо наше објекте горе наведених типова и доделимо им вредност која се враћа методом Сада (), који је заиста задужен за давање тренутног датума и времена, тада бринемо само о штампању сваког од декларисаних објеката.
ВажноВеома је важно укључити пакет јава.тиме у целини, тако да можемо приступити свим функцијама које користимо, такође ако сумњамо у службену документацију, можемо пронаћи више детаља о опцијама исте.
Да видимо како изгледа извршавање нашег програма:

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

Прва ствар коју можемо истакнути је да морамо увести оба пакета јава.тиме са свим својим класама као пакетом јава.тиме.формат са свим његовим часовима. Вежбу је могуће извести увозом одређених часова, али то остављамо као домаћи задатак, па и они имају задатак да погледају званичну документацију.
Затим видимо да стварамо објекат типа ДатеТимеФорматтер и користимо метод офПаттерн () који прихвата наведене џокере, видимо да их постављамо у дупликатима као гггг да бисте добили четири цифре текуће године или такође мм да бисте добили две цифре минута.
На крају одштампамо сваки датум са његовим форматима и добијемо следеће када извршимо наш програм:

Овде можемо посматрати све промене које смо унели у начин обликовања датума, чиме му можемо дати веће значење и читљивост како на људском нивоу, тако и за машине База података Шта МиСКЛ морате да добијете подразумевани датум у формату гггг-ЛЛ-дд.
Још једна употреба коју можемо дати новим класама датума и времена Јава је да будете у могућности да користите датуме који долазе из текстуалног низа, може их креирати корисник, долазе из текстуалне датотеке итд. Али важно је да морамо њима манипулисати и за то можемо користити све алате које имамо при руци.
Погледајмо у следећем коду како, користећи оно што смо видели, можемо да променимо датум из текстуалног низа.
 импорт јава.тиме. *; импорт јава.тиме.формат. *; јавна класа СтатицДате {публиц статиц воид маин (Стринг [] аргс) {Стринг СтартДате = "1906-12-31"; ЛоцалДате такенДате = ЛоцалДате.парсе (стартДате); Систем.оут.принтлн ("Датум:" + ТакенДате); Стринг датеСтартТиме = "1906-12-31Т12: 05"; ЛоцалДатеТиме ТакенДатеТиме = ЛоцалДатеТиме.парсе (ТимеИнитиалДате); Систем.оут.принтлн ("Датум / време:" + датумТакТиме); ДатеТимеФорматтер дф = ДатеТимеФорматтер.офПаттерн ("дд МММ уууу"); Систем.оут.принтлн (ТакенДате + "Са новим форматом:" + дф.формат (ТакенДате)); }} 

У коду видимо како стварамо почетни датум у текстуалном низу, а затим са објектом типа ЛоцалДате користимо метод Парсе да бисмо инкорпорирали текстуални низ у објекат типа датума, онда одштампамо објекат и видимо да ако је датум правилно прошао, понављамо исти поступак, али користећи датум и време са ЛоцалДатеТиме.
Коначно, узимамо наш први створени објект и на њега примјењујемо нови формат, чиме потврђујемо да смо успјели унијети и манипулирати датумом који смо одредили из текстуалног низа. Хајде да видимо како то изгледа када покренемо наш програм:

Овим смо завршили овај водич, научили смо да радимо са датумима у Јава користећи побољшања у класама које нова верзија садржи, што је Јава 8Ово се може користити за многе апликације на системском нивоу, па чак и за кориснички интерфејс.Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен
wave wave wave wave wave