Nomor Induk Kependudukan atau NIK adalah nomor identitas Penduduk yang bersifat unik atau khas, tunggal dan melekat pada seseorang yang terdaftar sebagai Penduduk Indonesia. NIK berlaku seumur hidup dan selamanya, yang diberikan oleh Pemerintah dan diterbitkan oleh Instansi Pelaksana kepada setiap Penduduk setelah dilakukan pencatatan biodata. NIK pertama kali diperkenalkan oleh Direktorat Jenderal Administrasi Kependudukan ketika Institusi Pemerintah ini menerapkan sistem KTP nasional yang terkomputerisasi (Wikipedia, 2017).
Contents
Sistem Penomoran NIK
Ternyata NIK tidak disusun sembarangan dan ada aturan-aturan tertentu dalam pembuatannya. Gambar di bawah ini akan menjelaskan bagaiman NIK bisa terbentuk.
Dari sini kita bisa tahu juga tanggal lahir dari pemilik NIK. Maka timbul pertanyaan, bagaimana kita dapat mengambil tanggal lahir dari NIK untuk kita simpan atau kita olah lebih lanjut ?
Python untuk Parsing Tanggal Lahir Dalam NIK
Sebelumnya mari kita coba mencari contoh NIK dari gambar-gambar e-KTP yang ada di Internet.
Dari gambar di atas kita mendapatkan NIK-nya adalah 3174096112900001.
Seperti yang kita tahu bahwa tanggal lahir pada NIK terletak pada index ke-6 hingga ke-12. Maka selanjutnya cukup melakukan slicing pada variabel string nik
tadi.
Sekarang kita telah mendapatkan bagian dari NIK yang merupakan tanggal lahir. Namun, karena pemilik NIK tersebut adalah perempuan, yang mana terdapat aturan khusus perempuan yakni format tanggal lahirnya ditambah nilai 40. Itu berarti kita perlu menyesuaikan lagi sebelum kita jadikan ke tanggal yang sebenarnya.
Kita perlu melakukan slicing lagi untuk mendapatkan angka hari dari string tanggal yang berformat “DDMMYY”. Kemudian kita konversi ke integer supaya bisa dikurangkan dengan angka 40 untuk mendapatkan nilai hari yang sebenarnya. Setelah itu dikembalikan lagi ke string agar bisa digabung lagi dengan bulan dan tahun sehingga kembali membentuk format “DDMMYY”.
Setelah itu kita sudah mendapatkan tanggal lahirnya, namun masih dalam bentuk string. Untuk merubahnya menjadi data tanggal, kita perlu impor module datetime
. Kemudian memasukkan string tanggal tadi menjadi obyek datetime
supaya dapat dilakukan pengolahan data tanggal lebih lanjut. Misalnya disimpan ke basis data.
Permasalahan Proses Parsing Tanggal dari NIK dengan Python
Dengan bantuan function strptime
kita bisa melakukan parsing tanggal yang masih dalam bentuk string menjadi bentuk tanggal dengan memperkenalkan polanya pada python. Jadi ketika memanggil function strptime
kita memasukkan dua argumen, yang pertama string tanggal yang ingin kita parsing, dan yang kedua adalah format pengenalan untuk tanggal yang kita parsing sehingga python dapat mengenali mana bagian untuk hari, mana bagian untuk bulan, dan mana bagian untuk tahun.
Python cukup cerdas untuk mengenali dengan bantuan format %d
yang artinya tanggal berformat 2-digit (DD), format %m
artinya bulan berformat 2-digit (MM), begitu pula untuk format %y
artinya tahun berformat 2-digit (YY). Pada umumnya kita menggunakan format tahun 4-digit yang mana dalam Python dikenali dengan format %Y
. Kemudian muncul pertanyaan, seberapa akurat Python dapat mengenali tahun dengan format 2-digit ?
Kenyataannya python hanya bisa mengenali tahun 2-digit sampai tahun 1969. Jadi jika kita masukkan tahun 2-digit dengan nilai “68” atau “45” yang mana seharusnya menjadi tahun “1968” dan tahun “1945”, namun ternyata yang dihasilkan python justru tahun “2068” dan tahun “2045”. Tentu ini tidak bisa kita acuhkan karena akan berdampak pada hasil pengolahan data yang kita miliki nanti.
Perhatikan contoh di atas, hasilnya sangat tidak rasional dan dapat menjadi informasi yang salah. Oleh karena itu perlu kita tinjau kembali untuk mencari solusi dari permasalahan tersebut.
Solusi
Solusi sementara yang saya dapat saat ini adalah dengan menentukan konteks cakupan tahun. Misal data yang sedang kita olah merupakan data yang kebanyakan berada dalam rentang tahun 100 tahun terakhir, maka kita cukup melakukan sedikit perhitungan matematika pada script kita agar dapat menampilkan tahun yang sesuai. Saya akan coba menerapkan solusi ini untuk contoh kasus di atas. Hasilnya menjadi seperti ini.
Seperti yang anda lihat, kini informasi yang dihasilkan pun sudah sesuai. Saya mengurangkan tahun yang didapat dari hasil parsing python dengan nilai 100 apabila tahun yang dihasilkan melebihi tahun saat ini. Sederhana bukan ? Namun bila anda menemukan solusi yang lebih baik lagi, silakan tinggalkan komentar anda di bawah.
Membuat Function untuk Parsing Tanggal Lahir dari NIK dengan Python
Kita telah berhasil mengambil tanggal lahir dari NIK dengan python, namun tentu tidak efektif bila harus menulis kode di atas berulang-ulang bila data NIK-nya banyak. Karena itu kita perlu membuat function yang membuat kita cukup menulis kode sekali dan bisa dieksekusi berulang-ulang tanpa harus menulis keseluruhan kode kembali.
Penerapan
Sekarang mari kita coba terapkan function di atas untuk mendapat umur dari beberapa NIK yang saya dapat dari internet. Untuk menghitung umur, saya menggunakan module agecalc
, mungkin anda perlu menginstall-nya terlebih dahulu.
pip install agecalc
Kesimpulan
Nah, itu tadi pembahasan mengenai bagaimana cara untuk mengambil tanggal lahir dari NIK. Dapat kita simpulkan bahwa hal tersebut cukup mudah dilakukan dengan python meskipun ada sedikit kendala terkait parsing tahun berformat 2-digit. Namun kita telah berhasil melakukannya. Sekarang giliran anda mencoba, Semoga berhasil !
nik[6:12] yang 12 itu artinya apa ya mas?
Seperti yang kita tahu bahwa tanggal lahir pada NIK terletak pada index ke-6 hingga ke-12. Maka untuk mengambil angka-angka tanggal lahir disitu dilakukan teknik slicing, jadi mengambil bagian tertentu dari suatu string berdasarkan index. Angka 6 menandakan index awal pengambilan bagian, sementara angka 12 menandakan index akhir pengambilan bagian.