Hi dev, pada kesempatan ini saya ingin berbagi pengalaman yang baru saja terjadi. Terkait SimpleDateFormat Android.
Mula-mula, saya mempunyai User Interface yang mengharuskan user untuk menginputkan waktu awal dan waktu akhir (Jam:Menit), tentu saya juga memvalidasi jenis inputan semacam ini, karena saya tidak ingin ada user iseng atau human error sehingga kebalik antara waktu awal dan waktu akhir.
Unit testing telah dilakukan hampir 2 bulan lebih, tapi beruntungnya saya menemukan bug ini tanpa sengaja. Beberapa kali melakukan input data rentang waktu ini, kami semua tidak menyadari bahwa data yang selalu kami inputkan tidak pernah terjadi lintas pergantian antara pagi-siang, kebetulan pola input data kami antara jam 06:00 s.d. 11:00 atau 12:00 s.d 18:00. Pola tersebut berjalan lancar sehingga membuat kami merasa aman-aman saja.
Nah pagi tadi, entah kenapa kebetulan saja tanpa ada niat saya input data waktu antara pukul 11:00 s.d 12:00, seketika validator saya melempar result INVALID, padahal secara kasap mata saya melihat bahwa ini tidak ada yang keliru dengan data yang saya inputkan.
Proses debug saya mulai dari komponen material time picker, hasilnya normal, sudah saya set mode waktu 24 jam. Setelah itu saya lanjutkan ke validator, saya juga melihat bahwa disitu tidak ada kejanggalan berarti, saya merasa bahwa setup saya sudah benar.
Sambil ngalamun, keraguan masih menghantui saya terhadap validator tersebut, akhirnya saya putuskan untuk melakukan teknik google fu, setelah ketemu dan langsung mencobanya.. ternyata benar.. hanya gara-gara time format saya seperti ini teryata ini pengaruh terhadap format waktunya juga.
Return 12 hours
SimpleDateFormat("hh:mm:")
Return 24 hours
SimpleDateFormat("HH:mm:")
Sebelumnya saya menggunakan format hh:mm
dan ternyata ini alasan kenapa validator saya menganggapnya invalid karena mode yang aktif adalah 12 jam. Sementara itu, widget time pickernya saya set 24 jam.
Beres!