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.


$config[zx-auto] not found$config[zx-overlay] not found