Tarikh Kenaikan di Java

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan melihat cara untuk menambah tarikh satu hari menggunakan Java. Sebelum Java 8, perpustakaan tarikh dan waktu Java standard tidak begitu mesra pengguna. Oleh itu, Joda-Time menjadi pustaka tarikh dan waktu standard de facto untuk Java sebelum Java 8.

Terdapat juga kelas dan perpustakaan lain yang dapat digunakan untuk menyelesaikan tugas, seperti java.util.Calendar dan Apache Commons.

Java 8 menyertakan API tarikh dan waktu yang lebih baik untuk mengatasi kekurangan perpustakaan lama.

Oleh itu, kami sedang mencari cara untuk menambah tarikh satu hari menggunakan Java 8, Joda-Time API, kelas Kalendar Java dan perpustakaan Apache Commons .

2. Pergantungan Maven

Pergantungan berikut harus disertakan dalam fail pom.xml :

  joda-time joda-time 2.10   org.apache.commons commons-lang3 3.5  

Anda boleh mendapatkan versi terbaru Joda-Time di Maven Central, dan juga versi terbaru Apache Commons Lang.

3. Menggunakan java.time

The java.time.LocalDate kelas adalah perwakilan tarikh-masa tidak berubah-ubah, sering dilihat sebagai tahun bulan hari.

LocalDate mempunyai banyak kaedah untuk manipulasi tarikh, mari kita lihat bagaimana kita dapat menggunakannya untuk menyelesaikan tugas yang sama:

public static String addOneDay(String date) { return LocalDate .parse(date) .plusDays(1) .toString(); }

Dalam contoh ini, kami menggunakan kelas java.time.LocalDate dan kaedah plusDays () untuk menambah tarikh satu hari.

Sekarang, mari kita sahkan bahawa kaedah ini berfungsi seperti yang diharapkan:

@Test public void givenDate_whenUsingJava8_thenAddOneDay() throws Exception { String incrementedDate = addOneDay("2018-07-03"); assertEquals("2018-07-04", incrementedDate); }

4. Menggunakan kalendar java.util.

Pendekatan lain adalah menggunakan java.util.Calendar dan kaedah tambahnya () untuk menambah tarikh.

Kami akan menggunakannya bersama dengan java.text.SimpleDateFormat untuk tujuan pemformatan tarikh:

public static String addOneDayCalendar(String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c.setTime(sdf.parse(date)); c.add(Calendar.DATE, 1); return sdf.format(c.getTime()); }

java.text.SimpleDateFormat ada untuk memastikan format tarikh yang diharapkan digunakan. Tarikhnya dinaikkan melalui kaedah tambah () .

Sekali lagi, pastikan pendekatan ini berfungsi seperti yang diharapkan:

@Test public void givenDate_whenUsingCalendar_thenAddOneDay() throws Exception { String incrementedDate = addOneDayCalendar("2018-07-03"); assertEquals("2018-07-04", incrementedDate); }

5. Menggunakan Masa Joda

The org.joda.time.DateTime kelas mempunyai banyak kaedah yang membantu untuk betul berurusan dengan tarikh dan masa.

Mari lihat bagaimana kita dapat menggunakannya untuk menambah tarikh satu hari:

public static String addOneDayJodaTime(String date) { DateTime dateTime = new DateTime(date); return dateTime .plusDays(1) .toString("yyyy-MM-dd"); }

Di sini, kami menggunakan kelas org.joda.time.DateTime dan kaedah plusDays () untuk menambah tarikh satu hari.

Kami dapat mengesahkan bahawa kod di atas berfungsi dengan ujian unit berikut:

@Test public void givenDate_whenUsingJodaTime_thenAddOneDay() throws Exception { String incrementedDate = addOneDayJodaTime("2018-07-03"); assertEquals("2018-07-04", incrementedDate); }

6. Menggunakan Apache Commons

Perpustakaan lain yang biasa digunakan untuk manipulasi tarikh (antara lain) adalah Apache Commons. Ia adalah satu suite utiliti sekitar penggunaan java.util.Calendar dan java.util.Date objek.

Untuk tugas kita, kita boleh menggunakan kelas org.apache.commons.lang3.time.DateUtils dan kaedah addDays () (perhatikan bahawa SimpleDateFormat sekali lagi digunakan untuk pemformatan tarikh):

public static String addOneDayApacheCommons(String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date incrementedDate = DateUtils .addDays(sdf.parse(date), 1); return sdf.format(incrementedDate); }

Seperti biasa, kami akan mengesahkan hasilnya dengan ujian unit:

@Test public void givenDate_whenUsingApacheCommons_thenAddOneDay() throws Exception { String incrementedDate = addOneDayApacheCommons( "2018-07-03"); assertEquals("2018-07-04", incrementedDate); }

7. Kesimpulannya

Dalam artikel ringkas ini, kami melihat pelbagai pendekatan untuk menangani tugas sederhana iaitu menambah tarikh satu hari. Kami telah menunjukkan bagaimana ia dapat dicapai dengan menggunakan API teras Java serta beberapa perpustakaan pihak ketiga yang popular.

Contoh kod yang digunakan dalam artikel ini boleh didapati di GitHub.