Rabu, 05 Oktober 2016

Menghitung selisih waktu (jam-menit-detik)

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);
    }
}


OUTPUT:

Bisa juga menggunakan code sbb:
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);
                                                 
    }
}


public static void main(String[] args) {
        Scanner Input = new Scanner (System.in);
        System.out.println ("syarat -j2 harus lebih besar dari j1. -nilai keduanya tidak boleh nol");
        
        System.out.print("Jam 1 =");
        int j1 = Input.nextInt();
        System.out.print("Menit 1 =");
        int m1 = Input.nextInt();
        System.out.print("Detik 1 =");
        int d1 = Input.nextInt();
    
       
        
        System.out.print("Jam 2 =");
        int j2 = Input.nextInt();
        System.out.print("Menit 2 =");
        int m2 = Input.nextInt();
        System.out.print("Detik 2 =");
        int d2 = Input.nextInt();
    
    
    int j3, sisa, m3, d3;
    int waktu1, waktu2, selisih;

    waktu1 = (3600*j1)+(60*m1)+d1;
    waktu2 = (3600*j2)+(60*m2)+d2;
    selisih = waktu2-waktu1;
    j3 = selisih/3600;
    sisa = selisih%3600;
    m3 = sisa/60;
    d3 = sisa%60;

    System.out.println ("MENGHITUNG SELISIH WAKTU");
    System.out.println ("========================");
    System.out.println ("\nWaktu Pertama   = "+j1+":"+m1+":"+d1);
    System.out.println ("Waktu Kedua     = "+j2+":"+m2+":"+d2);
    System.out.println ("\nSelisih Waktu   = "+j3+":"+m3+":"+d3);
    }

    }


reff:
http://jagocoding.com/tutorial/1197/Cara_Mencari_Selisih_Waktu_di_Java