Szerezd meg az aktuális dátumot a Java 8 előtt

1. Bemutatkozás

A régi rendszerekben előfordulhat, hogy olyan dátumokkal kell dolgoznunk, amikor sem az új dátum és idő API, sem az erősen ajánlott Joda-Time könyvtár nem áll rendelkezésre.

Ebben a rövid bemutatóban számos megközelítést vessünk szemügyre hogyan lehet lekérni az aktuális dátumot a Java 8 előtti rendszerekben.

2. Rendszeridő

Amikor csak egyetlen számszerű értékre van szükségünk, amely az aktuális dátumot és időpontot képviseli, használhatjuk a rendszer idejét. Az azóta eltelt milliszekundumok számának megszerzése 1970. január 1. 00:00:00 GMT használhatjuk a currentTimeMillis metódus, amely a hosszú:

long elapsedMilliseconds = System.currentTimeMillis ();

Amikor az eltelt időt nagyobb pontossággal akarjuk mérni, használhatjuk a nanoTime módszer. Ez visszaadja a rögzített, de tetszőleges pillanatból eltelt nanoszekundumok értékét.

Ez a tetszőleges idő a JVM-en belüli összes hívásnál megegyezik, így a visszaadott érték csak a több hívás között eltelt nanoTime:

rég elteltNanosecondsStart = System.nanoTime (); long elapsedNanoseconds = System.nanoTime () - elapsedNanosecondsStart;

3. Az java.util Csomag

Osztályok használata a java.util csomagot képviselhetünk egy pillanatban, általában az azóta eltelt milliszekundumokkal 1970. január 1. 00:00:00 GMT.

3.1. java.util.Dátum

Egy adott dátumot és időpontot képviselhetünk az a használatával Dátum tárgy. Ez milliszekundum pontosságot és az időzóna információkat tartalmazza.

Bár sok kivitelező áll rendelkezésre, a. Legegyszerűbb módja a Dátum Az aktuális dátumot megjelenítő objektum a helyi időzónában az alapvető konstruktort használja:

Dátum currentUtilDate = új dátum ();

Most hozzunk létre egy Dátum objektum egy adott dátumra és időre. Használhatnánk a fent említett konstruktorokat, és egyszerűen átadhatnánk a milliszekundum értéket.

Alternatív megoldásként használhatjuk a SimpleDateFormat osztály átalakítására a Húr érték egy tényleges értékre Dátum tárgy:

SimpleDateFormat dateFormatter = new SimpleDateFormat ("éééé-hh-éééé ÓÓ: h: mm"); Dátum customUtilDate = dateFormatter.parse ("2020-01-30 10:11:12");

A dátumminták széles skáláját használhatjuk igényeinknek megfelelően.

3.2. java.util.Naptár

A Naptár objektum megteheti, amit a Dátum csinál, és ez van jobb a dátumszámtani számításokhoz, mivel a Területi beállítás. Megadhatjuk a Területi beállítás mint földrajzi, politikai vagy kulturális régió.

Az aktuális dátum lekéréséhez, nem Időzóna vagy Területi beállítás megadott, használhatjuk a getInstance módszer:

Naptár currentUtilCalendar = Calendar.getInstance ();

És azért Naptár nak nek Dátum konverziót, egyszerűen használhatjuk a getTime módszer:

Dátum currentDate = Naptár.getInstance (). GetTime ();

Szórakoztató tényként a Gergely naptár osztály a világon leggyakrabban használt naptár megvalósítása.

4. A java.sql Csomag

Ezután a .3 kiterjesztését vizsgáljuk meg java.util.Dátum osztály, amely az egyenértékű SQL objektumokat képviseli.

4.1. java.sql.Date

Val,-vel java.sql.Date tárgy, nincs hozzáférésünk az időzóna információkhoz, a pontosság pedig napi szinten csonka. A mai ábrázoláshoz használhatjuk azt a konstruktort, amely a hosszú ezredmásodpercek ábrázolása:

Dátum currentSqlDate = új dátum (System.currentTimeMillis ());

Akárcsak korábban, egy adott dátumra is használhatjuk a SimpleDateFormat osztályba konvertálni java.util.Dátum először, majd kapjuk meg a milliszekundumokat a getTime módszer. Ezután átadhatjuk ezt az értéket a java.sql.Date konstruktőr.

Egyszerűen használhatjuk a értéke módszer, amikor a Húr ábrázolása a Dátum illeszkedik a éééé- [m] m- [d] d minta:

Dátum customSqlDate = Date.valueOf ("2020-01-30");

4.2. java.sql.Time

A java.sql.Time objektum ajánlatokat hozzáférés az óra, a perc és a második információhoz - még egyszer, időzónához való hozzáférés nélkül. Szerezzük meg az áramot Idő ezredmásodperces reprezentációval:

Idő currentSqlTime = új idő (System.currentTimeMillis ());

Idő megadása a értéke módszerrel átadhatunk egy értéket, amely megfelel a óó: mm: ss minta:

Idő customSqlTime = Time.valueOf ("10:11:12");

4.3. java.sql.Timestamp

Ebben az utolsó szakaszban egyesítjük az SQL-t Dátum és Idő információkat a Időbélyeg osztály. Ez lehetővé teszi számunkra, hogy nanomásodpercekig.

Hozzunk létre egy Időbélyeg objektumot ismét elhaladva a hosszú a konstruktor aktuális milliszekundumainak értéke:

Időbélyegző currentSqlTimestamp = új időbélyeg (System.currentTimeMillis ());

Végül hozzunk létre egy új szokást Időbélyeg használni a értéke módszer a szükséges éééé- [m] m- [d] d óó: hh: mm: ss [.f…] minta:

Timestamp customSqlTimestamp = Timestamp.valueOf ("2020-1-30 10: 11: 12.123456789");

5. Következtetés

Ebben a rövid bemutatóban azt láthattuk, hogyan lehet lekérni az aktuális dátumot és az adott pillanat dátumát a Java 8 vagy bármilyen külső könyvtár használata nélkül.

Mint mindig, a cikk kódja elérhető a GitHubon.