Získajte aktuálny dátum pred Java 8
1. Úvod
V starších systémoch možno budeme musieť pracovať s dátumami, keď nie je k dispozícii nové API dátumu a času ani vysoko odporúčaná knižnica Joda-Time.
V tomto krátkom tutoriáli sa pozrieme na niekoľko prístupov, ktoré treba vidieť ako získať aktuálny dátum v systémoch pred Java 8.
2. Systémový čas
Keď potrebujeme iba jednu číselnú hodnotu predstavujúcu aktuálny dátum a čas, môžeme použiť systémový čas. Na získanie počtu uplynulých milisekúnd 1. januára 1970 00:00:00 GMT môžeme použiť currentTimeMillis metóda, ktorá vracia a dlho:
long elapsedMilliseconds = System.currentTimeMillis ();
Keď chceme merať uplynulý čas s väčšou presnosťou, môžeme použiť nanoTime metóda. Takto sa vráti hodnota nanosekúnd, ktoré prešli od fixného, ale ľubovoľného okamihu.
Tento ľubovoľný čas je rovnaký pre všetky hovory vo vnútri JVM, takže vrátená hodnota je užitočná iba na výpočet rozdielu v uplynulých nanosekundách medzi viacerými hovormi nanoTime:
long elapsedNanosecondsStart = System.nanoTime (); long elapsedNanoseconds = System.nanoTime () - elapsedNanosecondsStart;
3. The java.util Balíček
Používanie tried z java.util balíka, môžeme predstavovať okamih v čase, zvyčajne o milisekundy, ktoré uplynuli od tohto času 1. januára 1970 00:00:00 GMT.
3.1. java.util.Date
Konkrétny dátum a čas môžeme reprezentovať pomocou a Dátum objekt. Obsahuje presnosť milisekúnd a informácie o časovom pásme.
Aj keď je k dispozícii veľa konštruktorov, najjednoduchší spôsob, ako vytvoriť a Dátum objekt predstavujúci aktuálny dátum v lokálnom časovom pásme je použiť základný konštruktor:
Dátum currentUtilDate = nový Dátum ();
Poďme teraz vytvoriť Dátum objekt pre konkrétny dátum a čas. Mohli by sme použiť vyššie uvedené konštruktory a jednoducho odovzdať hodnotu milisekúnd.
Prípadne môžeme použiť SimpleDateFormat trieda na premenu a String hodnota na skutočnú Dátum objekt:
SimpleDateFormat dateFormatter = nový SimpleDateFormat ("dd-MM-rrrr HH: mm: ss"); Date customUtilDate = dateFormatter.parse ("30-01-2020 10:11:12");
Podľa našich potrieb môžeme použiť širokú škálu dátumových vzorov.
3.2. java.util.Calendar
A Kalendár objekt môže robiť to, čo a Dátum robí, a je lepšie pre aritmetické výpočty dátumu, pretože to môže tiež trvať a Miestne nastavenie. Môžeme určiť Miestne nastavenie ako geografický, politický alebo kultúrny región.
Ak chcete získať aktuálny dátum, s č Časové pásmo alebo Miestne nastavenie špecifikované, môžeme použiť getInstance metóda:
Calendar currentUtilCalendar = Calendar.getInstance ();
A pre Kalendár do Dátum konverziu, môžeme jednoducho použiť getTime metóda:
Dátum currentDate = Calendar.getInstance (). GetTime ();
Ako zábavný fakt slúži Gregoriánsky kalendár triedy je implementácia najpoužívanejšieho kalendára na svete.
4. The java.sql Balíček
Ďalej preskúmame tri rozšírenia java.util.Date trieda, ktorá predstavuje ekvivalentné objekty SQL.
4.1. java.sql.Date
S java.sql.Date objekt, nemáme prístup k informáciám o časových pásmach a presnosť je na dennej úrovni skrátená. Na reprezentáciu dnes môžeme použiť konštruktor, ktorý berie a dlho zastúpenie milisekúnd:
Date currentSqlDate = new Date (System.currentTimeMillis ());
Rovnako ako predtým, pre konkrétny dátum môžeme použiť SimpleDateFormat triedy previesť na a java.util.Date najskôr a potom získajte milisekundy pomocou getTime metóda. Potom môžeme túto hodnotu odovzdať java.sql.Date konštruktér.
Môžeme jednoducho použiť hodnota metóda, keď String zastúpenie a Dátum sa zhoduje s rrrr- [m] m- [d] d vzor:
Date customSqlDate = Date.valueOf ("2020-01-30");
4.2. java.sql.Time
The java.sql.Time objekt ponúka prístup k informáciám o hodine, minúte a sekundách - opäť bez prístupu k časovému pásmu. Poďme na prúd Čas pomocou milisekundového vyjadrenia:
Čas currentSqlTime = nový čas (System.currentTimeMillis ());
Na zadanie času pomocou hodnota metódou môžeme odovzdať hodnotu zodpovedajúcu hodnote hh: mm: ss vzor:
Čas customSqlTime = Time.valueOf ("10:11:12");
4.3. java.sql.Timestamp
V tejto poslednej časti skombinujeme obidva SQL Dátum a Čas informácie pomocou Časová značka trieda. To nám umožňuje mať presnosť až na nanosekundy.
Poďme vytvoriť Časová značka objekt opätovným prejdením a dlho hodnota pre aktuálny počet milisekúnd konštruktoru:
Timestamp currentSqlTimestamp = new Timestamp (System.currentTimeMillis ());
Na záver si vytvoríme nový zvyk Časová značka pomocou hodnota metóda s požadovaným rrrr- [m] m- [d] d hh: mm: ss [.f…] vzor:
Timestamp customSqlTimestamp = Timestamp.valueOf ("2020-1-30 10: 11: 12.123456789");
5. Záver
V tejto krátkej príručke sme videli, ako získať aktuálny dátum a dátum pre daný okamih bez použitia Java 8 alebo akýchkoľvek externých knižníc.
Ako vždy je kód článku k dispozícii na GitHub.