Başlangıç tarihi ve bitiş tarihi dize biçiminde iki tarih verildiğinde, Java’da iki tarih arasındaki farkı bulan program kodunu yazacağız.
Bazen bir android uygulamada bazen ise yazdığınız java uygulamasında iki tarih arasındaki farkı bulmak isteyebilirsiniz. Uygulama ile iki tarih arasındaki gün farklını, iki saat arasındaki farkı yada saat, dakika gibi daha küçük zaman dilimleri gibi farklı rahatlıkla hesaplayabilirsiniz. Aşağıdaki kodu Andorid Studio, Eclipse, Netbeans gibi uygulamalarda çalıştırıp test edebilirsiniz.
Yöntem 1: İki gün arasındaki farkı bulmak için Java’da Dönem sınıfını kullanın. Period.between() yöntemi yıl, ay ve gün olarak iki tarih arasındaki farkı hesaplamak için kullanılır.
Yukarıdaki yaklaşımın uygulanması aşağıda verilmiştir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.time.*; import java.util.*; //tasarimkodlama.com class Main { static void tarihFarki(LocalDate t1, LocalDate t2) { Period diff = Period.between(t1, t2); System.out.print( "Tarih Farkı"); // Tarihleri yazdırma System.out.printf( "%d yıl, %d ay" + " ve %d gün ", diff.getYears(), diff.getMonths(), diff.getDays()); } // main public static void main(String[] args) { // Başlangıç tarihi LocalDate t1 = LocalDate.of(2018, 01, 10); // Bitiş Tarihi LocalDate t2 = LocalDate.of(2020, 06, 10); tarihFarki(t1, t2); } } |
Çıktı:
1 2 3 | Tarih Farkı2 yıl, 5 ay ve 0 gün |
Yöntem 2: İki tarih arasındaki farkı bulmak için SimpleDateFormat ve Date sınıfını kullanacağız. Adımlar aşağıdadır:
- SimpleDateFormat sınıfının bir nesnesini oluşturun ve dize biçimini tarih nesnesine dönüştürür.
- Tarihi üretmek için bir dizeden hem start_date hem de end_date ayrıştırılır; bu, simpleDateFormat sınıfının parse() yöntemi kullanılarak yapılabilir.
- Java’da getTime() yöntemini d2.getTime() – d1.getTime() olarak kullanarak milisaniye cinsinden iki tarih arasındaki zaman farkını bulun.
- İki tarih arasındaki farkı bulmak için tarih-saat matematik formülünü kullanın. Belirtilen iki tarih arasındaki yılları, günleri, saatleri, dakikaları ve saniyeleri döndürür.
- Nihai sonucu yazdırın.
Yukarıdaki yaklaşımın uygulanması aşağıda verilmiştir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; //tasarimkodlama.com class Main { //İki tarih arasındaki farkı bulan metod static void tarihFarki(String start_date, String end_date) { // SimpleDateFormat SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss"); // Try Block try { Date d1 = simpleDateFormat.parse(start_date); Date d2 = simpleDateFormat.parse(end_date); // milisaniye cinsinden farkı hesaplama long zaman_farki = d2.getTime() - d1.getTime(); // Saniye dakika saat ve gün olarak hesaplama long saniye_farki = (zaman_farki / 1000) % 60; long dakika_farki = (zaman_farki / (1000 * 60)) % 60; long saat_farki = (zaman_farki / (1000 * 60 * 60)) % 24; long yil_farki = (zaman_farki / (1000l * 60 * 60 * 24 * 365)); long gun_farki = (zaman_farki / (1000 * 60 * 60 * 24)) % 365; // Tarihleri yazdırma System.out.print("Tarihler arasındaki farkı yazdırma "); System.out.println( yil_farki + " yıl, " + gun_farki + " gün, " + saat_farki + " saat, " + dakika_farki + " dakika, " + saniye_farki + " saniye"); } // Catch Exception catch (ParseException e) { e.printStackTrace(); } } public static void main(String[] args) { // Başlangıç String t1 = "10-06-2020 01:10:20"; // Bitiş String t2 = "11-06-2021 07:30:50"; tarihFarki(t1, t2); } } |
Çıktı:
1 2 3 | Tarihler arasındaki farkı yazdırma 1 yıl, 1 gün, 6 saat, 20 dakika, 30 saniye |
Yöntem 3: Java yerleşik sınıfı TimeUnit kullanarak iki tarih arasındaki farkı daha iyi bir şekilde bulabiliriz.
Yukarıdaki yaklaşımın uygulanması aşağıda verilmiştir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.concurrent.TimeUnit; import java.util.Date; //tasarimkodlama.com class Main { //İki tarih arasındaki farkı bulan metod static void tarihFarki(String start_date, String end_date) { SimpleDateFormat sdf = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss"); try { Date d1 = sdf.parse(start_date); Date d2 = sdf.parse(end_date); long difference_In_Time = d2.getTime() - d1.getTime(); long difference_In_Seconds = TimeUnit.MILLISECONDS .toSeconds(difference_In_Time) % 60; long difference_In_Minutes = TimeUnit .MILLISECONDS .toMinutes(difference_In_Time) % 60; long difference_In_Hours = TimeUnit .MILLISECONDS .toHours(difference_In_Time) % 24; long difference_In_Days = TimeUnit .MILLISECONDS .toDays(difference_In_Time) % 365; long difference_In_Years = TimeUnit .MILLISECONDS .toDays(difference_In_Time) / 365l; System.out.print("Tarih arasındaki fark "); // Tarih yazdırma System.out.println( difference_In_Years + " yıl, " + difference_In_Days + " gün, " + difference_In_Hours + " saat, " + difference_In_Minutes + " dakika, " + difference_In_Seconds + " saniye"); } catch (ParseException e) { e.printStackTrace(); } } public static void main(String[] args) { // Başlangıç String t1 = "10-06-2020 01:10:20"; // Bitiş String t2 = "11-06-2021 07:30:50"; tarihFarki(t1, t2); } } |
Çıktı:
1 2 3 | Tarih arasındaki fark 1 yıl, 1 gün, 6 saat, 20 dakika, 30 saniye |
Kaynak:
https://www.geeksforgeeks.org/find-the-duration-of-difference-between-two-dates-in-java/
Yorum Yap