Hogyan lehet meghatározni a hét napját egy adott dátum elhaladásával Java-ban?
1. Áttekintés
Ebben a rövid bemutatóban megtudhatjuk, hogyan lehet kibontani a hét napját számként és szövegként egy Java dátumból.
2. Probléma
Az üzleti logikának gyakran szüksége van a hét napjára. Miért? Egyrészt a munkaidő és a szolgáltatási szint eltér a munkanapokon és a hétvégéken. Ezért sok rendszerhez szükséges a nap számként való megadása. Szükségünk lehet azonban a napra, mint szövegre a megjelenítéshez.
Szóval, hogyan vonhatjuk ki a hét napját a Java dátumokból?
3. Megoldás With java.util.Dátum
java.util.Dátum a Java 1.0 óta a Java dátumosztálya. A Java 7-es vagy annál régebbi verziójával kezdődő kód valószínűleg ezt az osztályt használja.
3.1. A hét napja számként
Első, számként vonjuk ki a napot felhasználásával java.util.Naptár:
public static int getDayNumberOld (dátum dátuma) {Naptár cal = Naptár.getInstance (); cal.setTime (dátum); return cal.get (Naptár.DAY_OF_WEEK); }
A kapott a szám 1 és (vasárnap) és 7 (szombat) között mozog. Naptár meghatározza az állandókat ehhez: Naptár. VASÁRNAP – Naptár. SZOMBAT.
3.2. A hét napja szövegként
Most mi kivonatolja a napot szövegként. Áthaladunk a Területi beállítás a nyelv meghatározásához:
public static String getDayStringOld (dátum dátum, területi beállítás területi beállítás) {DateFormat formatter = új SimpleDateFormat ("EEEE", területi beállítás); return formatter.format (dátum); }
Ez az egész napot az Ön nyelvén adja vissza, például angolul a „hétfő” vagy németül a „Montag”.
4. Megoldás With java.time.LocalDate
A Java 8 átdolgozta a dátum és idő kezelését, és bemutatta java.time.LocalDate dátumokra. Ebből kifolyólag, A csak Java 8-as vagy újabb verziókon futó Java-projekteknek ezt az osztályt kell használniuk!
4.1. A hét napja számként
A nap számként való kivonása triviális Most:
public static int getDayNumberNew (LocalDate date) {DayOfWeek day = date.getDayOfWeek (); return day.getValue (); }
Az így kapott szám még mindig 1 és 7 között mozog. De ezúttal Hétfő 1, vasárnap 7! A a hét napjának megvan a maga enum — A hét napja. Ahogy az várható volt, a enum értékek vannak HÉTFŐ – VASÁRNAP.
4.2. A hét napja szövegként
Most újra kivonjuk a napot szövegként. Be is haladunk a Területi beállítás:
public static String getDayStringNew (LocalDate date, Locale locale) {DayOfWeek day = date.getDayOfWeek (); return day.getDisplayName (TextStyle.FULL, területi beállítás); }
Csakúgy, mint a java.util.Dátum, ez az egész napot a választott nyelven adja vissza.
5. Következtetés
Ebben a cikkben kivontuk a hét napját a Java dátumaiból. Láttuk, hogyan lehet mind a számot, mind a szöveget visszaadni java.util.Dátum és java.time.LocalDate.
Mint mindig, a kód elérhető a GitHubon.