Kadang dalam suatu bagian dari project android kita, diharuskan untuk mengambil data waktu (tanggal, hari, jam, menit, dst) dari sistem Android. Data tersebut kemudian diolah untuk keperluan timing, conditional atau mungkin pengambilan keputusan dalam project Android Anda. Contoh sederhana penggunaan data DateTime ini adalah aplikasi ‘TaskShceduller’ versi Android. Fungsi aplikasi ini kurang lebihnya adalah mengatur eksekusi ‘action’ tertentu pada waktu (tanggal dan jam) tertentu. Aplikasi ini sudah pasti akan mengambil data DateTime pada sistem Android.
Untuk mengambil data DateTime dari sistem Android, Anda dapat memanfaatkan field-field dari  class Calendar. Field-field tersebut dalam bentuk konstanta bertipe integer seperti YEAR, MONTH, DAY, MINUTE, dst. Anda dapat menggunakannya langsung atau memanipulasinya menggunakan class SimpleDateFormat. Dengan menciptakan sebuah instance SimpleDateFormat Anda dapat langsung memparsing dan memformat tampilan DateTime sesuai keinginan. Anda dapat mengatur jam dengan hitungan 12 jam/24 jam, mengatur menit dengan default 1 digit/2 digit atau menambahkan am/pm pada tampilan waktu.  Untuk lebih jelasnya, simaklah contoh program sebagai berikut. Program ini merupakan pengembangan dari artikel sebelumnya tentang Timer di Android.
Nama program : timerku2.apk
Objective : menampilkan waktu sekarang dari sistem Android
Langkah – langkah development :
- Buka IDE Eclipse dalam ADT (Android Developer Tools) dan buatlah project baru dengan nama ‘timerku’ melalui menu File | New | Android application Project. Ikuti jendela wizard sampai selesai dengan menekan tombol ‘Next’.Â
- Atur layout aplikasi seperti pada artikel sebelumnya di sini
- Isikan program utama pada file MainActivity.java pada folder /src pada jendela Package Explorer, sebagai berikut :Â
publicclass MainActivity extends Activity {
      private Handler handler = new Handler();Â
      @Override
      protectedvoid onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             //panggil timer
             handler.postDelayed(runnable, 1000); Â
      }
      private Runnable runnable = new Runnable() {
               @Override
               publicvoid run() {
                      Calendar c1 = Calendar.getInstance();
                      SimpleDateFormat sdf1 = new SimpleDateFormat("d/M/yyyy h:m:s a");
                          //SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm:ss");
                          String strdate1 = sdf1.format(c1.getTime());
                          TextView txtdate1 = (TextView) findViewById(R.id.textView1);
                          txtdate1.setText(strdate1);    Â
                          }
                  handler.postDelayed(this, 1000);
               }
             };
      @Override
      publicboolean onCreateOptionsMenu(Menu menu) {
             // Inflate the menu; this adds items to the action bar if it is present.
             getMenuInflater().inflate(R.menu.main, menu);
             returntrue;
      }
}
4. Running program (CTRL+F11) dan amati hasil program pada AVD (Android Virtual Device) atau pada smartphone/tablet Android jika Anda menggunakan device sesungguhnya.Â
Penjelasan program :
Baris [2] : menciptakan instance Handler untuk keperluan pembuatan ‘objek’ Timer
Baris [9] : memanggil ‘event’ onTimer
Baris  [12] s.d [24] : isi ‘event’ onTimer yang dipanggil tiap satu satuan waktu (dalam contoh program ini adalah 1000ms/1 detik). Di dalamnya terdapat script untuk menampilkan waktu sekarang ke dalam komponen textView. Baris [15] untuk menginisialisasi instance Calendar. Baris [16] untuk memformat tampilan waktu dengan formasi yang didefinisikan pada parameter dibelakangnya. Baris [] dan [] adalah untuk menampilkan string waktu yang sudah diformat ke label textView. Karena semua script ini berada di dalam runnable yang dipanggil oleh Handler.postDelay tiap 1000 ms, maka efeknya adalah perubahan tulisan pada textView sesuai dengan waktu sekarang. Dengan kata lain Anda sedang membuat sebuah jam yang menunjukkan waktu sekarang lengkap dari tahun sampai satuan detik !.
Demikian tutorial mengambil data waktu dan tanggal dari sistem Android menggunakan Java, semoga bermanfaat untuk Anda.
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
tanya ya kx.. ini data waktu yg di tampilkn di dpet dri mana?
trus buat manifestnya ada tmbahan user-permission gak?
makasih kx sbelumnya..
dari sistem operasi Androidnya. Tidak perlu tambahan user permission
ohh gitu ya kx, makasih kx responnya..
artikelnya membantu banget 😉
Gan, kalau mau nampilin hari gimana ea ? Thanks
kalo cara yang paling mudah tinggal ambil instance dari class ‘calendar’ mas. Contoh :
Calendar calendar = Calendar.getInstance();
int hari = calendar.get(Calendar.DAY_OF_WEEK);
nanti tinggal pake trapping ‘switch’ buat custom nama harinya. Contoh :
switch (hari) {
case Calendar.SUNDAY:
// sekarang adalah hari minggu
case Calendar.MONDAY:
// ini senin
case Calendar.TUESDAY:
// sekarang selasa
// dst
}
om minta bantuanya kalau mengambil informasi ip adress gmn caranya
mas,,saya mau tanya kalau menjadikan waktu ke string bagaimana yah?
karena saya sedang membuat mobile token yang menggunakan algoritma SHA-1 dengan cara kombinasi password(string) dan time(to string) supaya bisa diproses untuk mendapat kode otentikasi baru trima kasih…
pake function ‘format’ mas.
contoh :
Date skr = Calendar.getInstance().getTime();
SimpleDateFormat waktu = new SimpleDateFormat(“yyyy-MM-dd-hh.mm.ss”);
String swaktu = waktu.format(skr);
System.out.println(“Waktu sekarang = ” + swaktu);
Mas, kalo mau ngambil nilai tanggalnya aja terus bulan n tahunnya gimna mas ? Sama nilai jam menit detiknya aja mas ? Saya mau pake buat aplikasi waktu sholat. Terima kasih
datanya kan sudah berupa string, tinggal di-parsing aja mas
Contoh kodenya gimna mas ? Misal Saya mau ngambil tahunnya aja nih mas kmudian sya tambah 10 dan saya mau ambil detiknya aja kmudian saya tambah 10, gimna caranya mas biar ngambil nilai perbagian aja yg selanjutnya saya proses ke perhitungan, terima kasih
coba gini mas:
yg ini : SimpleDateFormat sdf1 = new SimpleDateFormat(“d/M/yyyy h:m:s a”); ganti menjadi SimpleDateFormat sdf1 = new SimpleDateFormat(“d/M/yyyy h/m/s a”);
di bawah String strdate1 = sdf1.format(c1.getTime()); tambahi ini:
String[] data_waktu = input.split(“/”);
String tgl = data_waktu[0];
String bln = data_waktu[1];
String thn = data_waktu[2];
dst ya
mas, kalau misalnya waktu yg di get dari sistem mau di tambah 30 hari itu gimana ya? nanti hasil nya mau di save ke database.
Mas punya no Whatsapp ga biar saya bisa nanya Lebih jelas lagi , masalah blog atau apalah nanti saya dan teman teman saya akan menjadi pengikut setia kamu ..
untuk sementara pertanyaan/konsultasi hanya bisa lewat comment blog ini aja mas.
mas dan tmn2 mas mau jadi follower saya atau tidak, tidak akan mengurangi niat saya untuk share ilmu mas, karena saya tidak ada niat mencari follower
mas saya numpang nanya. kalo kita mau menampilkan hasil dari calendarview dengan selectionmode itu gmn caranya ya mas?