Mengambil Tanggal Lahir dari NIK dengan Python

2
2429
views
contoh-ktp-perempuan
Contoh KTP perempuan. Sumber Gambar : sarikurnia980.wordpress.com

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).

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.

aturan-nik
Sistem penomoran Nomor Induk Kependudukan (NIK).
Sumber Gambar : erte001009pgp.blogspot.co.id

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.

contoh-ktp-perempuan
Contoh KTP perempuan.
Sumber Gambar : Google Images

Dari gambar di atas kita mendapatkan NIK-nya adalah 3174096112900001.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

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.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

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”.

Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

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.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

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.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

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.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

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.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

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

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

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 !

Reference : Mengambil Tanggal Lahir dari NIK dengan Python

2 KOMENTAR

    • 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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.