Tutorial Belajar Cara Mencari Selisih Waktu di Java

Dalam bahasa pemrograman Java, ada library yang bisa Anda gunakan untuk mencari selisih waktu yakni JodaTime. JodaTime berfungsi untuk mencari selisih waktu di Java. Dalam beberapa kasus, JodaTime tidak selalu bisa Anda gunakan namun, kalau Anda hanya ingin mencari selisih waktu saya rasa JodaTime masih bisa Anda gunakan. Untuk contoh kasus, menghitung total jam kerja si Pegawai yang masuk pukul 08:00 dan pulang pukul 17:00 maka, JodaTime masih mampu menyelesaikannya namun, jika di perusahaan tersebut terdapat shift 24 jam dan si Pegawai masuk pukul 22:00 dan pulang pukul 07:00 maka, JodaTime akan menghasilkan output yang tidak sesuai pula dan outputnya ialah 15 jam. Lalu, bagaimana cara menyelesaikan contoh kasus yang si Pegawai masuk malam dan pulang pagi tersebut? Iya, jelas bisa. Anda harus bermain sedikit logika Anda. Berikut algoritma untuk menyelesaikannya:
  1. Input Waktu masuk si pegawai dan waktu pulang si pegawai.
  2. Kemudian, ubah Waktu masuk dan Waktu pulang menjadi 3 bagian yakni Jam, Menit dan Detik.
  3. Buat sebuah variable untuk menghitung berapa selisih waktu masuk dengan waktu pulang. Nilai ini akan selalu bertambah 1 pada poin nomor 4 dan 5.
  4. Setelah itu, lakukan secara berurutan dimulai dari detik dimana, Anda harus mengsamakan nilai detik waktu masuk dan detik waktu pulang. Caranya, cukup dengan cara menambahkan atau increment nilai detik waktu masuk. Lakukan ini dengan menggunakan perulangan. Dan jika nilai detik melewati 59 maka, nilai menit waktu masuk ditambah 1. Ingat, ketika perulangan maka, nilai variable yang Anda buat pada poin 3 tadi juga ikut Anda tambahkan atau increment 1.
  5. Setelah selesai dengan detiknya maka, lakukanlah hal yang sama dengan menit waktu masuk dan menit waktu pulang dimana, Anda harus mengsamakan nilai waktu menit masuk dengan waktu menit pulang dengan cara increment dan lakukan dengan menggunakan perulangan. Jika nilai menit waktu masuk melewati menit 59 maka, nilai waktu jam ditambah 1. Lakukanlah hal yang sama dengan nilai jam waktu masuk. Ingat, pada poin ini juga Anda increment nilai variable pada poin nomor 3 tadi.
  6. Setelah nilai waktu jam, menit dan detik masuk sama dengan waktu jam, menit dan detik pulang maka, saatnya mengolah nilai variable pada poin nomor 3 yang sudah Anda increment pada poin nomor 4 dan 5. Bagaimana cara mengolahnya? Anda bisa mengolahnya untuk mendapatkan nilai selisih dalam format HH:mm:ss atau Anda bisa juga mengolahnya menjadi satuan detik semua. Itu semua tergantung Anda sendiri gimana maunya.
Perlu diketahui, ini merupakan salah satu cara dari seribu satu cara yang ada untuk menyelesaikan masalah diatas tadi. Dan berikut ialah source code untuk menyelesaikan masalah diatas.
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import java.util.Scanner;
/**
 *
 *  @author Yudi Setiawan
 *
 */
public class Main {
    public static void main(String[] args) {
         
        //  Scanner
        Scanner scan = new Scanner(System.in);
         
        //  Input Waktu Awal
        System.out.println("Waktu Awal");
        System.out.print("Input Jam   : ");     String str_jam_awal = scan.nextLine();
        System.out.print("Input Menit : ");     String str_menit_awal = scan.nextLine();
        System.out.print("Input Detik : ");     String str_detik_awal = scan.nextLine();
         
        //  Input Waktu Akhir
        System.out.println("\nWaktu Akhir");
        System.out.print("Input Jam   : ");     String str_jam_akhir = scan.nextLine();
        System.out.print("Input Menit : ");     String str_menit_akhir = scan.nextLine();
        System.out.print("Input Detik : ");     String str_detik_akhir = scan.nextLine();
         
        //  Tampilkan Waktu Awal dan Waktu Akhir
        String str_waktu_awal = str_jam_awal+":"+str_menit_awal+":"+str_detik_awal;
        String str_waktu_akhir = str_jam_akhir+":"+str_menit_akhir+":"+str_detik_akhir;
        System.out.println("Waktu Awal  : "+str_waktu_awal);
        System.out.println("Waktu Akhir : "+str_waktu_akhir);
         
        //  Konversi variable str menjadi integer
        int jam_awal = Integer.parseInt(str_jam_awal);
        int jam_akhir = Integer.parseInt(str_jam_akhir);
        int menit_awal = Integer.parseInt(str_menit_awal);
        int menit_akhir = Integer.parseInt(str_menit_akhir);
        int detik_awal = Integer.parseInt(str_detik_awal);
        int detik_akhir = Integer.parseInt(str_detik_akhir);
         
        //  Proses pencarian selisih Waktu Awal dan Waktu Akhir
        //  Langkah Ketiga, cari selisih detik awal dan detik akhir    
        int selisih_detik = 0;
         
        //  Jika detik awal > detik akhir
        //  Contohnya, detik awal = 40 dan detik akhir = 30
        if(detik_awal > detik_akhir) {
             
            while(detik_awal != detik_akhir) {
                 
                if(detik_awal == 60) {
                    detik_awal = 0;
                    menit_awal++;
                        continue;
                }
                detik_awal++;
                selisih_detik++;
            }
        }
         
        //  Jika detik awal < detik akhir
        //  Contohnya, detik awal = 30 dan detik akhir = 40
        else if(detik_awal < detik_akhir) {
            selisih_detik = detik_akhir - detik_awal;
        }
         
        //  Masukkan ke variable selisih waktu
        int selisih_waktu = selisih_detik;
         
        //-------------------------------------------------------
        //  Langkah Kedua, cari selisih menit awal dan menit akhir     
        int selisih_menit = 0;
         
        //  Jika menit awal > menit akhir.
        //  Contohnya, menit awal = 50 dan menit akhir = 10
        if(menit_awal > menit_akhir) {
             
            while(menit_awal != menit_akhir) {
                 
                if(menit_awal == 60) {
                    menit_awal = 0;
                    jam_awal++;
                        continue;
                }
                 
                menit_awal++;
                selisih_menit++;
            }
        }
         
        //  Jika menit awal < menit akhir
        //  Contohnya, menit awal = 10 dan menit akhir = 50
        else if(menit_awal < menit_akhir) {
            selisih_menit = menit_akhir - menit_akhir;         
        }
         
        //  Ubah selisih menit menjadi satuan detik (1 menit = 60 detik)
        selisih_waktu += selisih_menit * 60;
         
        //  Langkah Pertama, cari selisih jam awal dan jam akhir       
        int selisih_jam = 0;
         
        //  Jika jam awal > jam akhir. Contohnya, Jam Awal = 22 (10 malam) dan Jam Akhir = 05 (5 pagi)
        if(jam_awal > jam_akhir) {
             
            //  Cocokkan antara jam awal dan jam akhir
            while(jam_awal != jam_akhir) {
                if(jam_awal == 24) {               
                    jam_awal = 0;
                    continue;
                }
                 
                jam_awal++;
                selisih_jam++;
            }
        }
         
        //  Jika jam awal < jam akhir. Contohnya, Jam Awal = 05 (5 pagi) dan Jam Akhir = 22 (10 malam)
        else if(jam_awal < jam_akhir)
            selisih_jam = jam_akhir - jam_awal;
         
        //  Ubah selisih jam menjadi satuan detik (1 jam = 3600 detik)
        selisih_waktu += selisih_jam * 3600;
         
        //  Tampilkan selisih antara waktu awal dan waktu akkhir dalam satuan detik
        System.out.println("Selisih antara waktu awal dan waktu akhir (detik) : "+selisih_waktu);
         
        //  Ubah selisih_waktu menjadi format waktu HH:mm:ss
        //  Ubah selisih waktu menjadi satuan jam
        int jam = selisih_waktu / 3600;
        selisih_waktu %= 3600;
         
        //  Ubah selisih waktu menjadi satuan menit
        int menit = 0;
        int detik = 0;
        if(selisih_waktu >= 60) {
            menit = selisih_waktu / 60;
            detik = selisih_waktu % 60;
             
        } else {
            menit = 0;
            detik = selisih_waktu;
        }
         
        //  Tampilkan selisih antara waktu awal dan waktu akhir dalam format waktu HH:mm:ss
        String waktu = jam+":"+menit+":"+detik;
        System.out.println("Selisih antara waktu awal dan waktu akhir (HH:mm:ss) : "+waktu);
    }
}

Dan berikut ialah yang menggunakan library JodaTime. Jangan lupa download terlebih dahulu library nya di internet.
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
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import org.joda.time.DateTime;
import org.joda.time.Seconds;
/**
 *
 * @author Yudi Setiawan
 *
 */
public class Main2 {
    public static void main(String[] args) throws ParseException {
         
        //  SimpleDateFormat       
        SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");
         
        //  Scanner
        Scanner scan = new Scanner(System.in);
         
        //  Input Waktu Awal
        System.out.println("Waktu Awal");
        System.out.print("Input Jam   : "); String waktu_awal = scan.nextLine()+":";
        System.out.print("Input Menit : "); waktu_awal += scan.nextLine()+":";
        System.out.print("Input Detik : "); waktu_awal += scan.nextLine();
         
        //  Input Waktu Akhir
        System.out.println("\nWaktu Akhir");
        System.out.print("Input Jam   : "); String waktu_akhir = scan.nextLine()+":";
        System.out.print("Input Menit : "); waktu_akhir += scan.nextLine()+":";
        System.out.print("Input Detik : "); waktu_akhir += scan.nextLine();
         
        //  Ubah waktu awal dan waktu akhir menjadi DateTime
        DateTime dtAwal = new DateTime(sdfTime.parse(waktu_awal));
        DateTime dtAkhir = new DateTime(sdfTime.parse(waktu_akhir));
         
        //  Tampilkan waktu awal dan waktu akhir
        System.out.println();
        System.out.println("Waktu Awal  : "+waktu_awal);
        System.out.println("Waktu Akhir : "+waktu_akhir);
         
        //  proses cari selisih waktu dalam satuan detik
        //  10:50:20 - 11:30:50
        int selisih_detik = Math.abs(Seconds.secondsBetween(dtAwal, dtAkhir).getSeconds());
        System.out.println("Selisih waktu awal dan waktu akhir (detik) : "+selisih_detik);
         
        //  Ubah selisih detik menjadi format HH:mm:ss
        int jam = selisih_detik / 3600;
        selisih_detik %= 3600;
                 
        int menit = 0;
        int detik = 0;
        if(selisih_detik >= 60) {
            menit = selisih_detik / 60;
            detik = selisih_detik % 60;
        } else {
            detik = selisih_detik;
        }
         
        //  Tampilkan selisih waktu dalam format HH:mm:ss
        String selisih_waktu = jam+":"+menit+":"+detik;
        System.out.println("Selisih waktu awal dan waktu akhir (HH:mm:ss) : "+selisih_waktu);
                                                 
    }
}

Dan berikut output untuk kedua program diatas.


Subscribe to receive free email updates:

0 Response to "Tutorial Belajar Cara Mencari Selisih Waktu di Java"

Posting Komentar