Cara Menghitung Selisih Tanggal atau Hari di Java Netbeans

Mungkin suatu saat kita membutuhkan cara menghitung selisih tanggal untuk mencari tanggal harus kembali pada sistem informasi pustaka dalam peminjaman buku atau melakukan pencarian tanggal jatuh tempo atau kasus kasus lainnya yang berhubungan dengan pencarian tanggal

Pada tulisan ini saya akan mencoba membuat suatu program sederhana untuk menghitung lamanya hari antara 2 kejadian, misal lama pinjam buku, jumlah hari antara hari meminjam buku dengan hari mengembalikan buku. adapun program yang dibuat berbasis GUI agar memiliki penampilan yang baik dengan langkah-langkah sebagai berikut :
a. Membuka Program NetBeans, lalu buat project baru dengan nama selisihHari atau nama yang lain.
b. Kita buka project kemudian pada bagian source package kita klik kanan lalu cari new Jframe Form (untuk membuat frame form baru sebagai bingkai program kita) diberi nama LamaHariGUI dan pada bagian package kita beri nama GUI atau nama lain.
c. Selanjutnya kita isi frame form yang sudah kita buat dengan
1) 4 buah Label ( berada di Pallete bagian swing Control), Isi masing-masing label dengan tulisan yang kita kehendaki dengan cara :
- Jlabel1 di klik kanan lalu edit text dan ganti dengan tulisan Tanggal Pinjam,
- Jlabel2
ganti dengan tulisan Tanggal Kembali,
- Jlabel3
dengan Lama dan
- Jlabel4
dengan hari.
2) 3 buah Text Field, masing-masing text field klik kanan lalu pilih Change Variable Name ...,
dan masukkan nama Text Field nya :
- JTextField1 dengan nama tPinjam, untuk isian tanggal pinjam
- JTextField2 dengan nama tKembali untuk isian tanggal kembali
- JTextField3 dengan nama tLama untuk isian lama hari
3) Langkah berikutnya pada JTextField2, klik kanan lalu pilih event -->action --> actionPerformed [tKembaliActionPerformed].
Isilah dengan source code dibawah ini :
private void tKembaliActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
try{

//Konversi dari string ke tanggal
Date TanggalPinjam =df.parse(tPinjam.getText());
Date TanggalKe
mbali = df.parse(tKembali.getText());

//Tgl di konversi ke milidetik
long Hari1 = TanggalPinjam.getTime();
long Hari2 = TanggalKembali.getTime();
long diff = Hari2 - Hari1;
long Lama = diff / (24 * 60 * 60 * 1000);

tLama.setText(Long.toString(Lama));
} catch (ParseException e)
{
e.printStackTrace();
}
}


Df Format berfungsi untuk menentukan format tanggal yang kita inginkan.
Kemudian String yang kita masukkan dirubah ke bentuk tanggal dan yang terakhir kita konversi ke mili detik, dengan ketentuan (1 hari = 24 jam x 60 menit x 60 sekon x 1000 milidetik)
Setelah itu maka program yang kita buat dapat di jalankan.

Adapaun Source code secara lengkap dapat dilihat sebagai berikut :
package GUI;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
import java.io.*;

public class LamaHariGUI extends javax.swing.JFrame {

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

/** Creates new form LamaHariGUI */
public LamaHariGUI() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {

tPinjam = new javax.swing.JTextField();
tKembali = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();

tLama = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

tPinjam.addAction
Listener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tPinjamActionPerformed(evt);
}
});

tKembali.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tKembaliActionPerf
ormed(evt);
}
});

jLabel1.setText("Tanggal Pinjam");

jLabel2.setText("Tanggal Kembali");

jLabel3.setText("Lama");

tLama.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tLamaActionPerformed(evt);
}
});

jLabel4.setText("hari");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParall
elGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(96, 96, 96)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponen
t(jLabel2)
.addComponent(jLabel1)
.addComponent(jLabel3))
.addGap(54, 54, 54)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(tPinjam, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE)
.addComponent(tKembali)
.addGroup(layout.createSequentialGroup()
.addComponent(tLama, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel4)))
.addContaine
rGap(192, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(66, 66, 66)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tPinjam, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.
createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tKembali, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponen
t(jLabel2))
.addGap(83, 83, 83)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tLama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponen
t(jLabel3)
.addComponent(jLabel4))
.addContainerGap(85, Short.MAX_VALUE))
);

pack();
}//

private void
tPinjamActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

}

private void tKembaliActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
try{

//Konversi dari string ke tanggal
Date TanggalPinjam =df.parse(tPinjam.getText());
Date TanggalKe
mbali = df.parse(tKembali.getText());

//Tgl di konversi ke milidetik
long Hari1 = TanggalPinjam.getTime();
long Hari2 = TanggalKembali.getTime();
long diff = Hari2 - Hari1;
long Lama = diff / (24 * 60 * 60 * 1000);

tLama.setText(Long.toString(Lama));


} catch (ParseException e)
{
e.printStackTrace();
}
}

private void tLamaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your hand
ling code here:

}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LamaHariGUI().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JTextField tKembali;
private javax.swing.JTextField tLama;
private javax.swing.JTextField tPinjam;
// End of variables declaration


}


Tampilan yang kita peroleh adalah seperti tampak pada gambar di bawah ini :