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ÁRNAPNaptá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 enumA 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.