Bagaimana menentukan hari dalam seminggu dengan melewati tarikh tertentu di Jawa?

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat cara mengekstrak hari dalam seminggu sebagai nombor dan teks dari tarikh Java.

2. Masalah

Logik perniagaan sering memerlukan hari dalam seminggu. Kenapa? Untuk satu, waktu kerja dan tahap perkhidmatan berbeza antara hari kerja dan hujung minggu. Oleh itu, mendapatkan hari sebagai nombor adalah perlu untuk banyak sistem. Tetapi kita mungkin memerlukan hari sebagai teks untuk dipamerkan.

Jadi, bagaimana kita mengekstrak hari dalam seminggu dari tarikh di Jawa?

3. Penyelesaian Dengan java.util.Date

java.util.Date telah menjadi kelas tarikh Java sejak Java 1.0. Kod yang bermula dengan Java versi 7 atau lebih rendah mungkin menggunakan kelas ini.

3.1. Hari dalam seminggu sebagai Nombor

Pertama, kami mengekstrak hari sebagai nombor menggunakan java.util.Kalendar :

public static int getDayNumberOld(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.DAY_OF_WEEK); }

Bilangan yang dihasilkan berkisar antara 1 (Ahad) hingga 7 (Sabtu) . Kalendar menentukan pemalar untuk ini: Kalendar.SUNDAY - Calendar.SATURDAY .

3.2. Hari dalam seminggu sebagai Teks

Sekarang kita mengekstrak hari sebagai teks . Kami lulus dalam Lokal untuk menentukan bahasa:

public static String getDayStringOld(Date date, Locale locale) { DateFormat formatter = new SimpleDateFormat("EEEE", locale); return formatter.format(date); }

Ini mengembalikan hari penuh dalam bahasa anda , seperti "Isnin" dalam bahasa Inggeris atau "Montag" dalam bahasa Jerman.

4. Penyelesaian Dengan java.time.LocalDate

Java 8 merombak pengendalian tarikh dan masa dan memperkenalkan java.time.LocalDate untuk tarikh. Oleh itu, projek Java yang hanya dijalankan pada Java versi 8 atau lebih tinggi harus menggunakan kelas ini!

4.1. Hari dalam seminggu sebagai Nombor

Mengambil hari sebagai nombor adalah remeh sekarang:

public static int getDayNumberNew(LocalDate date) { DayOfWeek day = date.getDayOfWeek(); return day.getValue(); }

Bilangan yang dihasilkan masih berkisar antara 1 hingga 7. Tetapi kali ini, Isnin adalah 1 dan Ahad adalah 7 ! Yang hari dalam seminggu mempunyai sendiri enum - hari dalam minggu . Seperti yang dijangkakan, nilai enum adalah MONDAY - SUNDAY .

4.2. Hari dalam seminggu sebagai Teks

Sekarang kita mengekstrak hari sebagai teks lagi. Kami juga melalui Lokal :

public static String getDayStringNew(LocalDate date, Locale locale) { DayOfWeek day = date.getDayOfWeek(); return day.getDisplayName(TextStyle.FULL, locale); }

Sama seperti java.util.Date , ini mengembalikan hari penuh dalam bahasa yang dipilih.

5. Kesimpulan

Dalam artikel ini, kami mengekstrak hari dalam seminggu dari tarikh Java. Kami melihat cara mengembalikan nombor dan teks menggunakan java.util.Date dan java.time.LocalDate .

Seperti biasa, kodnya tersedia di GitHub.