Práce s daty v Javě 8

Obsah
Práce s daty byla vždy zlomovým bodem v kariéře programátorů. Je to částečně proto, že v dřívějších verzích Jáva bylo to trochu matoucí a nekonzistentní. V nové verzi a API což nám umožňuje získat z jazyka maximum díky jasnějším a snadněji použitelným metodám.
Díky tomu je práce s formáty data a času v Jáva nebuďte mučeni. K tomu musíme studovat nové formy a možnosti, které nám jazyk dává, s cílem proměnit jeden z bodů, které vyvolávají největší zmatek, v něco, co správně ovládáme.
Pro zjednodušení práce vývojový tým Jáva nám poskytla řadu běžných metod, které můžeme použít, a to jak při práci s Termíny, jako když pracujeme s hodiny. Díky tomu je snaha o učení menší díky podobnému chování u obou typů objektů.
Níže uvedeme některé z metod, které nejvíce vynikají, spolu s malým vysvětlením, k čemu je můžeme použít, čímž si můžeme udělat obecnou představu, když přejdeme později k praktické části.
vTato metoda nám umožňuje vytvořit kombinaci objektu, který jej vyvolá, s jiným objektem.
formátUmožňuje nám použít některé parametry k vytvoření data nebo času v konkrétním formátu, který potřebujeme.
dostatUmožňuje nám získat prvek, který zadáme.
jeUmožňuje nám ověřit, zda je objekt typu, se kterým porovnáváme.
PlusTo nám dává možnost přidat k objektu, který jej vyvolá, přidání a vrátí jeho kopii s již přidanou hodnotou.
naUmožňuje nám provést převod z jednoho typu na druhý.
Nyní s těmito znalostmi můžeme přejít k dalším problémům v rámci stejného předmětu dat a časů v Jáva.
Jak jsme vysvětlovali formuláře, které se používají v Jáva Nyní se změnily pro novou verzi, a proto opakujeme příklady, které uvedeme, potřebujeme verzi 8 sady pro vývoj jazyků, jinak se zobrazí chyba jako následující:

Ujasněno je, podívejme se níže, co musíme udělat, abychom získali informace o aktuální datum a čas v Javě.
Za tímto účelem vytvoříme třídu, ve které budeme vytvářet instance objektů typu LocalDate, Místní čas Y LocalDateTime. Každý z nich nám poskytne aktuální datum, aktuální čas a aktuální datum a čas.
To je docela užitečné v případech, jako je systémové protokoly, kde musíme zachytit přesný okamžik, ve kterém je provedena akce nebo událost, kterou máme zájem zaznamenat. Abychom dosáhli cíle, můžeme vytvořit kód podobný následujícímu:
 import java.time. *; public class CurrentDate {public static void main (String [] args) {LocalDate currentDate = LocalDate.now (); System.out.println (aktuálníDatum); LocalTime currentTime = LocalTime.now (); System.out.println (currentTime); LocalDateTime now = LocalDateTime.now (); System.out.println (nyní); }} 

Jak vidíme, vše, co děláme, je deklarovat naše objekty výše uvedených typů a přiřadit jim hodnotu, která je vrácena metodou Nyní (), což je ten, kdo má skutečně na starosti uvádění aktuálního data a času, pak se staráme pouze o tisk každého z deklarovaných objektů.
DůležitéJe velmi důležité zahrnout balíček java.time v plném rozsahu, abychom měli přístup ke všem funkcím, které používáme, a také pokud máme pochybnosti v oficiální dokumentaci, můžeme najít podrobnější informace o jejich možnostech.
Podívejme se, jak vypadá spuštění našeho programu:

Dalším aspektem, který musíme vždy vzít v úvahu, je způsob zobrazení informací. Pokud jde o data, máme mnoho způsobů, ale některé jsou v některých situacích pohodlnější než jiné. To nás většinu času vede k provádění dalších operací, které nás nutí psát další řádky kódu, které v Java 8 už to není tak složité.
V závislosti na aplikaci, kterou vyvíjíme, budeme chtít zobrazit měsíc podle čísla v kalendáři nebo podle názvu, ale název může být úplný nebo zkrácený, stejně jako den nebo rok, to vše nám dává velmi široký počet možností, všechny stejně platné. K vyřešení tohoto problému můžeme použít formátovač data.
Pro formátování dat máme nějaké zástupné znaky nebo parametry, které nám umožňují získat hodnoty vysvětlené v předchozím odstavci. Podívejme se, které jsou nejdůležitější.
  • Y, nám umožňuje přístup k roku ve čtyř nebo dvoumístném formátu (2014 nebo 14).
  • D, nám umožňuje získat číslo dne v roce (225).
  • d, Na rozdíl od předchozího vrátí číslo dne příslušného měsíce (27).
  • L, nám pomáhá získat měsíc v roce v číselné formě, M dává nám měsíc v textu.
  • H, dává nám čas.
  • s, dává nám sekundy.
  • m, nám umožňuje získat zápis.
  • na, nám dává dopolední nebo odpolední hodinu.
  • z, nám umožňuje přístup k názvu časového pásma.
Protože známe základní parametry formátu, zkusíme nové cvičení, v následujícím kódu uděláme nějaké formáty, v první řadě získáme aktuální datum a převedeme jej do formátu rok měsíc den s lomítky místo spojovníků, pak budeme analyzovat statické datum, které pochází z řetězce ve stejném formátu, a nakonec ukážeme úplné datum, včetně toho, jestli je dopoledne nebo odpoledne, abychom využili zástupné znaky, které vysvětlili dříve. Podívejme se na odpovídající kód:
 import java.time. *; import java.time.format. *; public class DateFormatter {public static void main (String [] args) {DateTimeFormatter formatted date = DateTimeFormatter.ofPattern ("rrrr / LL / dd"); System.out.println (FormattedDate.format (LocalDate.now ())); System.out.println (LocalDate.parse ("2014/11/15", formátované datum)); DateTimeFormatter timezone = DateTimeFormatter.ofPattern ("d MMMM, rrrr h: mm a"); System.out.println (ZonedDateTime.now (). Format (časové pásmo)); }} 

První věc, kterou můžeme zdůraznit, je, že musíme importovat oba balíčky java.time se všemi svými třídami jako balíček java.time.format i se všemi svými třídami. Cvičení je možné provést importem konkrétních tříd, ale to necháváme jako domácí úkol, takže i oni mají za úkol vidět oficiální dokumentaci.
Pak vidíme, že vytvoříme objekt typu DateTimeFormatter a používáme metodu ofPattern () který přijímá zadané zástupné znaky, vidíme, že zástupné znaky umisťujeme duplicitně jako rrrr k získání čtyř číslic aktuálního roku nebo také mm k získání dvou číslic minut.
Nakonec vytiskneme všechna data s jejich formáty a při spuštění našeho programu získáme následující:

Zde můžeme sledovat všechny změny, které jsme provedli ve způsobu formátování dat, čímž mu můžeme dát větší smysl a čitelnost na lidské úrovni i pro motory Databáze Co MySQL musíte obdržet výchozí datum ve formátu rrrr-LL-dd.
Další využití, které můžeme dát novým třídám data a času Jáva je mít možnost používat data, která pocházejí z textového řetězce, která mohou být vytvořena uživatelem, pocházet z textového souboru atd. Ale důležité je, že s nimi musíme manipulovat, a proto můžeme použít všechny nástroje, které máme po ruce.
Podívejme se v následujícím kódu, jak s využitím toho, co jsme viděli, můžeme provádět změny data z textového řetězce.
 import java.time. *; import java.time.format. *; public class StaticDate {public static void main (String [] args) {String StartDate = "1906-12-31"; LocalDate takenDate = LocalDate.parse (startDate); System.out.println ("Datum:" + TakenDate); Řetězec dateStartTime = "1906-12-31T12: 05"; LocalDateTime TakenDateTime = LocalDateTime.parse (TimeInitialDate); System.out.println ("Datum / Čas:" + dateTakTime); DateTimeFormatter df = DateTimeFormatter.ofPattern ("dd MMM uuuu"); System.out.println (TakenDate + "S novým formátem:" + df.format (TakenDate)); }} 

V kódu vidíme, jak vytvoříme počáteční datum v textovém řetězci, pak s objektem typu LocalDate používáme metodu Analyzovat začlenit textový řetězec do objektu typu data, pak objekt vytiskneme a uvidíme, že pokud vzal datum správně, opakujeme stejný postup, ale s použitím data a času s LocalDateTime.
Nakonec vezmeme náš první vytvořený objekt a použijeme na něj nový formát, čímž potvrdíme, že jsme byli schopni zadat a manipulovat s datem, které jsme stanovili z textového řetězce. Podívejme se, jak to vypadá, když spustíme náš program:

Tím tento tutoriál dokončujeme, naučili jsme se pracovat s daty v Jáva pomocí vylepšení ve třídách, které nová verze obsahuje, což je Java 8To lze použít pro mnoho aplikací na systémové úrovni a dokonce i pro uživatelská rozhraní.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave