«

»

Dec 16

[Java] get day between 2 Dates

barusan browsing bagaimana caranya mendapatkan jumlah hari diantara 2 tanggal, contohnya :

tanggal_a : 27 – 11 – 1989

tanggal_b : 29 – 11 – 1989

nah, dari 2 tanggal diatas, seharusnya tercetak “2 Hari” karena dari tanggal_b ke tanggal_a berjarak 2 hari, disini saya tidak menggunakan library apa pun, langsung aja source code nya, sebelum sayanya lupa,hehe :


import java.util.*;
import java.text.*;
 
public class CobaKalender{
 
private Calendar awal = Calendar.getInstance();
 
private Calendar akhir = Calendar.getInstance();
 
private String tanggal1 = "28-11-2009",
 
tanggal2 = "02-12-2009";
 
private SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
 
	public CobaKalender(){
		Date a = null;
		Date b = null;
 
		//merubah string ke date menggunakan method parse
		try {
			a = sdf.parse(tanggal1);
			b = sdf.parse(tanggal2);
		} catch (ParseException e) {
			e.printStackTrace();
		}
 
		//panggil metod HitungHari untuk menghitung hari
		int hari = HitungHari(a,b);
		//cetak
		System.out.println("Selisih : " + hari + " hari");
	}
 
	public int HitungHari(Date a, Date b){
		int perbedaan = 0;
		int jumlahHari = 0;
 
		if (a.compareTo(b) < 0){
			awal.setTime(a);
			akhir.setTime(b);
		}else{
			awal.setTime(b);
			akhir.setTime(a);
		}
 
		//membandingkan tahun date a dan tahun date b
		while (awal.get(Calendar.YEAR) != akhir.get(Calendar.YEAR)){
			perbedaan = 365 * (akhir.get(Calendar.YEAR) -- awal.get(Calendar.YEAR));
			jumlahHari += perbedaan;
			awal.add(Calendar.DAY_OF_YEAR, perbedaan);
		}
		if (awal.get(Calendar.DAY_OF_YEAR) != akhir.get(Calendar.DAY_OF_YEAR)){
			perbedaan = akhir.get(Calendar.DAY_OF_YEAR) -- awal.get(Calendar.DAY_OF_YEAR);
			jumlahHari += perbedaan;
			awal.add(Calendar.DAY_OF_YEAR, perbedaan);
		}
		return(jumlahHari);
	}
 
	public static void main(String[] args){
		new CobaKalender();
	}
}

dan hasilnya akan seperti ini :

Selisih : 4 hari
//(^_^)V hehehe

selesai deh, gampang kan :P mungkin pembaca punya cara yang lebih simple dan singkat?? silahkan di share, :D

6 comments

  1. ai

    nice sharing….makasih banget…semoga bermanfaat :D
    .-= ai´s last blog ..Peraturan Itu Untuk Siapa? =-.

    Kus Andriadi :
    iya, sama2…:D

    [Reply]

  2. ridu

    wuis mantabs nih programer dari BL :D

    Kus Andriadi :
    huaa, bang ridu lebay nih,,hihi…

    [Reply]

  3. Kangedo

    Gan kalo private SimpleDateFormat sdf = new SimpleDateFormat(“dd-MM-yyyy”);
    (“dd-MM-yyyy”) diubah menjadi (“dd/MM/yyyy”) bisa ga???

    [Reply]

    Kus Andriadi Reply:

    bisa gan :)

    [Reply]

  4. dariuuz

    nice inpoh gan. gw lg nyari sourcecode utk menghitung usia. bisa nih di olah lbh lanjut… :D

    [Reply]

    Kus Andriadi Reply:

    yoi makasih :)

    [Reply]

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Get Adobe Flash playerPlugin by wpburn.com wordpress themes