Tutorial Belajar Cara Mencari Selisih Waktu di Java
Tuesday, May 16, 2017
Add Comment
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:
- Input Waktu masuk si pegawai dan waktu pulang si pegawai.
- Kemudian, ubah Waktu masuk dan Waktu pulang menjadi 3 bagian yakni Jam, Menit dan Detik.
- Buat sebuah variable untuk menghitung berapa selisih waktu masuk dengan waktu pulang. Nilai ini akan selalu bertambah 1 pada poin nomor 4 dan 5.
- 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.
- 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.
- 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.
0 Response to "Tutorial Belajar Cara Mencari Selisih Waktu di Java"
Post a Comment