Lampung Dev – Apakan Anda pernah terbesit bagaimana cara membaca kode digit KTP? Jika iya, maka Anda saat ini membaca artikel yang tepat. Kita akan bahas terkait bagaimana cara membuat program deteksi data KTP dari kode digit dengan JavaScript.

Nomor Induk Kependudukan (NIK) yang terdapat di Kartu Tanda Penduduk (KTP) di Indonesia terdiri dari 16 digit. Setiap digit dari NIK memiliki makna tertentu dan memberikan informasi spesifik tentang pemilik KTP. Berikut ini adalah penjelasan detail dari setiap bagian NIK di Indonesia:

Format Umum NIK (Nomor Induk Kependudukan):

AA BB CC DDMMYY SSSS

Dimana:

  • AA: Kode Provinsi (2 digit)
  • BB: Kode Kabupaten/Kota (2 digit)
  • CC: Kode Kecamatan (2 digit)
  • DDMMYY: Tanggal lahir (6 digit)
  • SSSS: Nomor urut pendaftaran di kecamatan (4 digit)

Penjelasan Detail:

  1. AA (Kode Provinsi):
    • Kode ini mengidentifikasi provinsi tempat KTP diterbitkan. Setiap provinsi di Indonesia memiliki kode tersendiri, misalnya:
      • 11: Aceh
      • 12: Sumatera Utara
      • 31: DKI Jakarta
      • 32: Jawa Barat
      • 34: DI Yogyakarta
      • 36: Banten
      • 63: Kalimantan Selatan
      • 94: Papua
      • Dan lain-lain.
  2. BB (Kode Kabupaten/Kota):
    • Kode ini menunjukkan kabupaten atau kota dalam suatu provinsi. Kode ini adalah kode administrasi kabupaten/kota di bawah provinsi yang bersangkutan. Setiap kabupaten/kota memiliki kode yang berbeda. Misalnya, di provinsi Jawa Barat (32):
      • 01: Kabupaten Bogor
      • 02: Kabupaten Sukabumi
      • 73: Kota Bandung
      • 75: Kota Bekasi
  3. CC (Kode Kecamatan):
    • Dua digit berikutnya mewakili kode kecamatan di dalam kabupaten atau kota tersebut. Kode ini mengidentifikasi kecamatan tempat tinggal pemilik KTP. Setiap kecamatan memiliki kode unik yang berbeda-beda di setiap kabupaten/kota.
  4. DDMMYY (Tanggal Lahir):
    • Bagian ini mengindikasikan tanggal lahir pemilik KTP dalam format DD-MM-YY (Tanggal-Bulan-Tahun). Namun, untuk perempuan, ada sedikit perubahan.
      • Jika pemilik KTP adalah laki-laki, maka tanggal lahir akan ditulis sesuai dengan format normal.
      • Jika pemilik KTP adalah perempuan, maka angka tanggal lahir akan ditambah 40. Misalnya, jika tanggal lahir adalah 12 (untuk laki-laki), maka untuk perempuan akan menjadi 12 + 40 = 52. Ini berarti bahwa jika ada angka 52, itu menunjukkan perempuan yang lahir pada tanggal 12.
    Contoh:
    • 050599 untuk laki-laki yang lahir pada 5 Mei 1999.
    • 450599 untuk perempuan yang lahir pada 5 Mei 1999 (5 + 40 = 45).
  5. SSSS (Nomor Urut Pendaftaran):
    • Empat digit terakhir dari NIK adalah nomor urut registrasi di kecamatan. Nomor ini dihasilkan secara acak atau berdasarkan urutan penerbitan KTP di kecamatan terkait.
    • Kombinasi ini bersifat unik dan memberikan nomor urut yang berbeda untuk setiap warga di satu kecamatan.

Contoh NIK:

Misalkan NIK seorang laki-laki dari Kabupaten Bandung, Jawa Barat yang lahir pada 12 Agustus 1995:

32 01 03 120895 0001

Penjelasan:

  • 32: Kode Provinsi Jawa Barat.
  • 01: Kode Kabupaten Bandung.
  • 03: Kode Kecamatan di Kabupaten Bandung.
  • 120895: Laki-laki yang lahir pada tanggal 12 Agustus 1995.
  • 0001: Nomor urut registrasi 0001 di kecamatan tersebut.

Jika NIK tersebut adalah seorang perempuan yang lahir pada tanggal yang sama:

32 01 03 520895 0001

Penjelasan:

  • 32: Kode Provinsi Jawa Barat.
  • 01: Kode Kabupaten Bandung.
  • 03: Kode Kecamatan di Kabupaten Bandung.
  • 520895: Perempuan yang lahir pada tanggal 12 Agustus 1995 (12 + 40 = 52).
  • 0001: Nomor urut registrasi 0001 di kecamatan tersebut.

NIK dalam KTP di Indonesia sangat kaya informasi. Ia mengandung kode wilayah, tanggal lahir, jenis kelamin, dan nomor urut pendaftaran. Dengan memahami struktur ini, kamu bisa mengidentifikasi banyak hal tentang pemilik NIK secara detail.

Membuat Program Deteksi Data KTP

Berikut adalah contoh program sederhana dalam JavaScript yang dapat digunakan untuk mendeteksi dan mengekstrak informasi dari NIK (Nomor Induk Kependudukan) KTP di Indonesia. Library ini akan mendekode NIK untuk mendapatkan kode provinsi, kabupaten/kota, kecamatan, tanggal lahir, dan jenis kelamin.

1. Kode Program

// Data kode provinsi Indonesia
const kodeProvinsi = {
  "11": "Aceh",
  "12": "Sumatera Utara",
  "31": "DKI Jakarta",
  "32": "Jawa Barat",
  "33": "Jawa Tengah",
  "34": "DI Yogyakarta",
  "35": "Jawa Timur",
  // Tambahkan provinsi lainnya sesuai kebutuhan
};

// Data kode kabupaten/kota untuk Jawa Barat (kode 32)
const kodeKabupatenKota = {
  "3201": "Kabupaten Bogor",
  "3202": "Kabupaten Sukabumi",
  "3271": "Kota Bandung",
  "3275": "Kota Bekasi",
  // Tambahkan kabupaten/kota lainnya sesuai kebutuhan
};

// Data kode kecamatan untuk kabupaten/kota di Jawa Barat
const kodeKecamatan = {
  "320103": "Kecamatan Cibinong, Kabupaten Bogor",
  "320201": "Kecamatan Cicurug, Kabupaten Sukabumi",
  "327101": "Kecamatan Andir, Kota Bandung",
  "327501": "Kecamatan Bekasi Selatan, Kota Bekasi",
  // Tambahkan kecamatan lainnya sesuai kebutuhan
};

// Fungsi untuk mendeteksi jenis kelamin
function deteksiJenisKelamin(tanggalLahir) {
  const tanggal = parseInt(tanggalLahir.substring(0, 2));
  if (tanggal > 40) {
    return "Perempuan";
  }
  return "Laki-laki";
}

// Fungsi untuk mendeteksi tanggal lahir
function deteksiTanggalLahir(tanggalLahir) {
  let tanggal = parseInt(tanggalLahir.substring(0, 2));
  const bulan = tanggalLahir.substring(2, 4);
  const tahun = tanggalLahir.substring(4, 6);

  if (tanggal > 40) {
    tanggal = tanggal - 40; // Perempuan memiliki tanggal lahir +40
  }

  const fullYear = tahun > 20 ? "19" + tahun : "20" + tahun; // Mengasumsikan NIK di atas tahun 2000

  return `${tanggal}-${bulan}-${fullYear}`;
}

// Fungsi untuk mendeteksi informasi NIK
function deteksiNIK(nik) {
  if (nik.length !== 16) {
    return "NIK harus terdiri dari 16 digit.";
  }

  const kodeProv = nik.substring(0, 2);
  const kodeKabKot = nik.substring(0, 4); // Gabungan kode provinsi dan kabupaten/kota
  const kodeKec = nik.substring(0, 6); // Gabungan kode provinsi, kabupaten/kota, dan kecamatan
  const tanggalLahir = nik.substring(6, 12);
  const nomorUrut = nik.substring(12, 16);

  const provinsi = kodeProvinsi[kodeProv] || "Provinsi tidak dikenal";
  const kabupatenKota = kodeKabupatenKota[kodeKabKot] || "Kabupaten/Kota tidak dikenal";
  const kecamatan = kodeKecamatan[kodeKec] || "Kecamatan tidak dikenal";
  const jenisKelamin = deteksiJenisKelamin(tanggalLahir);
  const tanggalLahirFormatted = deteksiTanggalLahir(tanggalLahir);

  return {
    nik: nik,
    provinsi: provinsi,
    kabupatenKota: kabupatenKota,
    kecamatan: kecamatan,
    tanggalLahir: tanggalLahirFormatted,
    jenisKelamin: jenisKelamin,
    nomorUrut: nomorUrut
  };
}

// Contoh penggunaan library
const nikInput = "3201035208950001"; // Ganti dengan NIK yang ingin dicek
const hasilDeteksi = deteksiNIK(nikInput);

console.log("Hasil Deteksi NIK:", hasilDeteksi);

2. Penjelasan Kode

  • kodeProvinsi: Objek ini berisi data kode provinsi di Indonesia yang diambil dari 2 digit pertama NIK.
  • deteksiJenisKelamin(tanggalLahir): Fungsi ini mendeteksi apakah pemilik NIK adalah laki-laki atau perempuan berdasarkan nilai tanggal lahir. Jika tanggal lahir lebih dari 40, maka itu menunjukkan jenis kelamin perempuan.
  • deteksiTanggalLahir(tanggalLahir): Fungsi ini memformat tanggal lahir dengan format DD-MM-YYYY, di mana jika tanggal lebih dari 40 untuk perempuan, angka 40 akan dikurangi.
  • deteksiNIK(nik): Fungsi utama untuk mendeteksi informasi dari NIK. Fungsi ini mengembalikan objek yang berisi detail informasi seperti provinsi, kabupaten/kota, kecamatan, tanggal lahir, jenis kelamin, dan nomor urut.

3. Cara Menggunakan

  • Panggil fungsi deteksiNIK(nikInput) dengan memasukkan NIK yang ingin dicek.
  • Fungsi ini akan mengembalikan sebuah objek yang berisi informasi lengkap dari NIK tersebut, yang bisa kamu tampilkan di console.log() atau di UI.

4. Contoh Hasil Output

Jika kita menggunakan NIK 3201035208950001, hasilnya akan seperti ini:

{
  nik: "3201035208950001",
  provinsi: "Jawa Barat",
  kabupatenKota: "Kabupaten Bogor",
  kecamatan: "Kecamatan Cibinong, Kabupaten Bogor",
  tanggalLahir: "12-08-1995",
  jenisKelamin: "Perempuan",
  nomorUrut: "0001"
}

4. Pengembangan Lebih Lanjut

  • Kamu dapat menambahkan lebih banyak data untuk kabupaten/kota dan kecamatan ke dalam peta sesuai kebutuhan.
  • Jika kamu menginginkan data yang lebih lengkap dan akurat, bisa mengambil dari sumber resmi seperti BPS atau API yang menyimpan data wilayah Indonesia.
  • Menambahkan validasi untuk menangani input yang tidak sesuai atau kode yang tidak valid.

Program deteksi KTP dari kode digit ini tentu masih sangat sederhana dan dapat Anda dikembangkan lagi supaya lebih canggih. Anda dapat melengkapi data-data provinsi, kabupaten kota dan kecamatan supaya proses deteksinya lebih akurat. Semoga tutorial ini bermanfaat, salam koding!

Share.

Seorang profesional teknologi yang berfokus pada pengembangan aplikasi (web & Android), DevOps, teknologi data, serta spesialisasi dalam Natural Language Processing (NLP) dan pengembangan ChatBot berbasis NLP. Memiliki keahlian mendalam di ekosistem Node.js dan aktif berkontribusi pada berbagai proyek open-source melalui library JavaScript di NPM. Rutin menulis artikel dan panduan teknis seputar pemrograman di LampungDev.com, berbagi wawasan seputar tren teknologi terbaru dan solusi pemrograman inovatif.

Exit mobile version