Sebagai sebuah website penyedia kalender dan tanggalan, memberikan data yang akurat adalah prioritas utama kami. Salah satu tantangan terbesar dalam pembuatan kalender di Indonesia adalah Kalender Hijriah (penanggalan Islam), karena penentuannya tidak statis dan sangat bergantung pada pergerakan bulan (lunar) secara real-time serta hasil Sidang Isbat dari Kementerian Agama (Kemenag) RI.

Menariknya, setelah melakukan testing dan pengujian pada 36 sampel bulan (setara 3 tahun kalender penuh), kalkulasi internal kami berhasil mencapai akurasi 100% (36/36 bulan) persis sama dengan hasil penetapan resmi dari Kemenag.

Bagaimana kami melakukannya secara otomatis lewat kode? Artikel teknis ini akan membongkar “dapur” Tanggalanku.id.

Tantangan Menghitung Hijriah di Indonesia

Di Indonesia, pemerintah menggunakan sistem Imkanur Rukyat (Kemungkinan Terlihatnya Hilal) berdasarkan kesepakatan menteri-menteri agama Brunei Darussalam, Indonesia, Malaysia, dan Singapura (MABIMS).

Sejak tahun 2021, MABIMS memperbarui kriterianya menjadi sangat ketat:

  • Tinggi Hilal minimal 3 derajat di atas ufuk.
  • Sudut Elongasi (jarak sudut matahari dan bulan) minimal 6,4 derajat.

Jika pada saat matahari terbenam (sunset) di hari ke-29 bulan Hijriah kriteria di atas terpenuhi, maka keesokan harinya masuk bulan baru (tanggal 1). Jika tidak, bulan digenapkan menjadi 30 hari (istikmal). Sistem di Indonesia juga menggunakan prinsip Wilayatul Hukmi; artinya, jika hilal memenuhi syarat di salah satu titik paling barat Indonesia, maka hilal dianggap terlihat untuk seluruh wilayah NKRI.

Studi Kasus: “Anomali Desember” dan Misteri Garis Barat Daya

Dalam pengembangan algoritma ini, kami menemukan fenomena astronomis yang sangat menarik setiap menjelang akhir tahun (khususnya bulan Desember).

Awalnya, kami hanya menggunakan satu titik observasi paling barat di Indonesia, yaitu Pulau Weh (Sabang). Secara logika awam, matahari terbenam paling akhir di ujung barat, sehingga hilal seharusnya paling mudah terlihat di sana.

Namun, hasil testing kami untuk penetapan bulan Rajab dan Syaban di Desember 2025 dan 2026 selalu miss (gagal memenuhi kriteria MABIMS) di Sabang. Mengapa?

Pada bulan Desember, posisi matahari secara astronomis sedang berada di titik belahan bumi paling selatan (Tropic of Capricorn). Sementara itu, Sabang berada jauh di utara khatulistiwa. Akibatnya, durasi bulan berada di atas ufuk saat matahari terbenam di Sabang menjadi sangat singkat. Ketinggian hilal selalu tercekik di bawah 3 derajat, meskipun sudut elongasinya mencukupi.

Kami pun mencoba menggeser titik observasi ke Pelabuhan Ratu, Sukabumi. Daerah ini terletak di selatan pulau Jawa, sejalan dengan kemiringan matahari. Hasilnya? Ketinggian hilal sukses melewati batas aman 3 derajat! Namun sayangnya, Elongasi (jarak sudut) masih terlalu tipis dan gagal mencapai 6,4 derajat.

Uniknya, Pulau Sumatera memiliki bentuk geografi yang membentang miring dari Barat Laut ke Tenggara. Jika kita menarik “garis virtual” dari ujung Sabang hingga Pelabuhan Ratu, masih ada wilayah yang secara astronomis menggabungkan keunggulan posisi “Selatan” (untuk mengejar ketinggian saat matahari di selatan) dan “Barat Daya” (untuk menambah elongasi karena terbenam lebih telat).

Lokasi tersebut adalah Pantai Pasir Putih di Bengkulu. Begitu kami memasukkan Bengkulu ke dalam matriks observasi, keajaiban pun terjadi. Ketinggiannya stabil di atas 3 derajat, dan elongasinya sukses menembus 6,4 derajat!

Berikut adalah log pengecekan otomatis dari engine kami saat memecahkan kebuntuan tersebut:

Desember 2025

===========================================
PENGECEKAN HILAL (MULTI-LOKASI KEMENAG)
Tanggal Target  : 2025-12-21T12:00:00.000Z UTC
Waktu Konjungsi : 2025-12-20T01:44:03.071Z UTC
===========================================
📍 Lokasi: Sabang / Pulau Weh (Tinggi: 35 mdpl)
   Tinggi Terkoreksi : 2.8798 derajat
   Elongasi Geo      : 6.4778 derajat
   Status MABIMS     : ❌ GAGAL
-------------------------------------------
📍 Lokasi: Pelabuhan Ratu (Tinggi: 50 mdpl)
   Tinggi Terkoreksi : 3.8289 derajat
   Elongasi Geo      : 6.3618 derajat
   Status MABIMS     : ❌ GAGAL
-------------------------------------------
📍 Lokasi: Bengkulu (Pantai Pasir Putih) (Tinggi: 5 mdpl)
   Tinggi Terkoreksi : 3.5234 derajat
   Elongasi Geo      : 6.4201 derajat
   Status MABIMS     : ✅ LULUS
-------------------------------------------
===========================================
KESIMPULAN SIDANG ISBAT:
✅ HILAL TERLIHAT (MABIMS TERPENUHI)
   Titik Tertinggi: Pelabuhan Ratu (3.8289 derajat)
➡️ 1 Hijriah jatuh pada KEESOKAN HARINYA

Desember 2026

===========================================
PENGECEKAN HILAL (MULTI-LOKASI KEMENAG)
Tanggal Target  : 2026-12-10T12:00:00.000Z UTC
Waktu Konjungsi : 2026-12-09T00:52:31.284Z UTC
===========================================
📍 Lokasi: Sabang / Pulau Weh (Tinggi: 35 mdpl)
   Tinggi Terkoreksi : 2.7901 derajat
   Elongasi Geo      : 6.5070 derajat
   Status MABIMS     : ❌ GAGAL
-------------------------------------------
📍 Lokasi: Pelabuhan Ratu (Tinggi: 50 mdpl)
   Tinggi Terkoreksi : 3.7577 derajat
   Elongasi Geo      : 6.3828 derajat
   Status MABIMS     : ❌ GAGAL
-------------------------------------------
📍 Lokasi: Bengkulu (Pantai Pasir Putih) (Tinggi: 5 mdpl)
   Tinggi Terkoreksi : 3.4470 derajat
   Elongasi Geo      : 6.4444 derajat
   Status MABIMS     : ✅ LULUS
-------------------------------------------
===========================================
KESIMPULAN SIDANG ISBAT:
✅ HILAL TERLIHAT (MABIMS TERPENUHI)
   Titik Tertinggi: Pelabuhan Ratu (3.7577 derajat)
➡️ 1 Hijriah jatuh pada KEESOKAN HARINYA

Melalui temuan inilah, prinsip Wilayatul Hukmi (jika satu wilayah melihat, maka berlaku untuk seluruh negeri) membuktikan keampuhannya secara matematis. Tanpa titik Bengkulu, kalender akan keliru memundurkan awal bulan sebanyak 1 hari.

Di Balik Layar: Kode Pengecekan Hilal

Untuk melakukan perhitungan posisi benda langit secara presisi tinggi, kami menggunakan library TypeScript astronomy-engine (berdasarkan algoritma di buku legendaris Astronomical Algorithms karya Jean Meeus).

Berikut adalah source code utuh dari algoritma “Sidang Isbat” otomatis kami:

import {
  Body,
  SearchRiseSet,
  Equator,
  Horizon,
  AngleBetween,
  SearchMoonPhase,
  Observer,
  GeoVector,
} from 'astronomy-engine';

const OBSERVATION_POINTS = [
  { name: 'Sabang / Pulau Weh', obs: new Observer(5.905917, 95.218028, 35) },
  { name: 'Pelabuhan Ratu', obs: new Observer(-7.0265, 106.5514, 50) },
  { name: 'Bengkulu (Pantai Pasir Putih)', obs: new Observer(-3.826, 102.264, 5) }
];

function cekHilal(year: number, month: number, day: number) {
  // Tanggal 12 UTC pada hari yang diminta
  const targetDate = new Date(Date.UTC(year, month - 1, day, 12, 0, 0));

  // Cari fase konjungsi (New Moon) terakhir SEBELUM targetDate
  let newMoon = SearchMoonPhase(0, targetDate, -35);
  if (!newMoon) throw new Error("Cannot find new moon");

  console.log(`===========================================`);
  console.log(`PENGECEKAN HILAL (MULTI-LOKASI KEMENAG)`);
  console.log(`Tanggal Target  : ${targetDate.toISOString()} UTC`);
  console.log(`Waktu Konjungsi : ${newMoon.date.toISOString()} UTC`);
  console.log(`===========================================`);

  let isMabimsPassed = false;
  let bestLocation = "";
  let bestAltitude = -999;
  let bestElongation = 0;

  for (const point of OBSERVATION_POINTS) {
    const nextSunset = SearchRiseSet(Body.Sun, point.obs, -1, newMoon.date, 10);
    if (!nextSunset) continue;

    const moonEq = Equator(Body.Moon, nextSunset.date, point.obs, true, true);
    const moonPos = Horizon(nextSunset.date, point.obs, moonEq.ra, moonEq.dec, 'normal');
    
    // @ts-ignore
    const sunEqGeo = GeoVector(Body.Sun, nextSunset.date, true);
    const moonEqGeo = GeoVector(Body.Moon, nextSunset.date, true);
    const elongGeo = AngleBetween(sunEqGeo, moonEqGeo);

    const distAU = Math.sqrt(moonEq.vec.x ** 2 + moonEq.vec.y ** 2 + moonEq.vec.z ** 2);
    const distKm = distAU * 149597870.7;
    const semiDiameterDeg = Math.asin(1737.4 / distKm) * (180 / Math.PI);
    
    const dipDeg = (1.76 * Math.sqrt(point.obs.height)) / 60;
    const correctedAltitude = moonPos.altitude + semiDiameterDeg + dipDeg;

    let status = '❌ GAGAL';
    if (correctedAltitude >= 3 && elongGeo >= 6.4) {
      status = '✅ LULUS';
      isMabimsPassed = true;
    }

    if (correctedAltitude > bestAltitude) {
      bestAltitude = correctedAltitude;
      bestElongation = elongGeo;
      bestLocation = point.name;
    }

    console.log(`📍 Lokasi: ${point.name} (Tinggi: ${point.obs.height} mdpl)`);
    console.log(`   Tinggi Terkoreksi : ${correctedAltitude.toFixed(4)} derajat`);
    console.log(`   Elongasi Geo      : ${elongGeo.toFixed(4)} derajat`);
    console.log(`   Status MABIMS     : ${status}`);
    console.log(`-------------------------------------------`);
  }

  console.log(`===========================================`);
  console.log(`KESIMPULAN SIDANG ISBAT:`);
  if (isMabimsPassed) {
    console.log(`✅ HILAL TERLIHAT (MABIMS TERPENUHI)`);
    console.log(`   Titik Tertinggi: ${bestLocation} (${bestAltitude.toFixed(4)} derajat)`);
    console.log(`➡️ 1 Hijriah jatuh pada KEESOKAN HARINYA`);
  } else {
    console.log(`❌ HILAL BELUM TERLIHAT DI SELURUH NKRI`);
    console.log(`   Titik Tertinggi: ${bestLocation} (${bestAltitude.toFixed(4)} derajat)`);
    console.log(`➡️ Bulan digenapkan 30 hari (Istikmal), 1 Hijriah LUSA`);
  }
}

Kenapa Akurasinya Bisa 100%?

Banyak library kalender Islam di luar sana (seperti moment-hijri) hanya menggunakan perhitungan matematis kalender Urfi (Tabular) yang sifatnya statis (bulan ganjil 30 hari, genap 29 hari bergantian). Sistem ini bagus untuk sejarah, tapi tidak pernah cocok dengan realita sidang isbat di Indonesia.

Kunci dari akurasi 100% kami terletak pada perpaduan tiga hal:

  1. Algoritma Meeus Murni: Menghitung konjungsi (ijtima’) dengan tingkat error yang sangat kecil secara astronomis.
  2. Koreksi Ketinggian (Topocentric & Dip of Horizon): Kami menghitung hingga sedetail refraksi atmosfer, semi-diameter fisik bulan, dan ketinggian pengamat (misalnya 35 mdpl di Sabang).
  3. Standar MABIMS Kemenag: Kami mengimplementasikan aturan ketat 3° dan 6,4° yang digunakan resmi oleh pemerintah Indonesia saat ini.

Dengan logika ini, ketika grid kalender kami menampilkan tanggalan Hijriah untuk tahun-tahun yang akan datang, Anda bisa yakin bahwa tanggal tersebut dibangun di atas landasan astronomi presisi tinggi, bukan sekadar tebak-tebakan matematis biasa.

Tentu saja, khusus untuk bulan Ramadan, Syawal, dan Dzulhijjah, keabsahan mutlak di Indonesia tetap menunggu ketok palu Sidang Isbat dari Kemenag RI.

Referensi & Bacaan Lanjutan

Kalkulasi yang digunakan di web ini didasarkan pada sumber-sumber astronomis dan hukum pemerintah berikut:

  1. Kemenag RI. (2026). Kriteria Baru MABIMS (3 derajat dan elongasi 6,4 derajat). Diakses pada 21 Juli 2026, dari https://kemenag.go.id/nasional/bagaimana-posisi-hilal-jelang-muharam-1448-h-ini-penjelasannya-b3AOO
  2. MUI & Kemenag. (2026). Metode Imkanur Rukyat (Kemungkinan Terlihatnya Hilal) dan Sidang Isbat. Diakses pada 21 Juli 2026, dari https://kemenag.go.id/opini/galau-kapan-1-ramadan-1447-h-ini-solusinya-MKaWC
  3. Kemenag RI. (2022). Prinsip Kesatuan Hukum (Wilayatul Hukmi) di Indonesia. Diakses pada 21 Juli 2026, dari https://kemenag.go.id/opini/hilalnya-sama-kenapa-awal-ramadan-bisa-berbeda-abpgqo
  4. NU Online. (2024). Pengertian Istikmal (Penggenapan Bulan) Saat Hilal Tidak Terlihat. Diakses pada 21 Juli 2026, dari https://islam.nu.or.id/ramadhan/rukyatul-hilal-sebagai-metode-penentuan-awal-ramadhan-LVQSJ
  5. Wikipedia. Garis Balik Selatan (Tropic of Capricorn) Saat Titik Balik Desember. Diakses pada 21 Juli 2026, dari https://id.wikipedia.org/wiki/Garis_balik_selatan
  6. Kanwil Kemenag Jabar. Pusat Observasi Bulan (POB) Cibeas, Pelabuhan Ratu, Jawa Barat. Diakses pada 21 Juli 2026, dari https://kemenag.go.id/nasional/ini-lokasi-pelaksanaan-pengamatan-hilal-u6rddq
  7. Kanwil Kemenag Aceh. (2026). Tugu Nol Kilometer, Sabang (Pulau Weh) Sebagai Titik Rukyat. Diakses pada 21 Juli 2026, dari https://aceh.kemenag.go.id/baca/kemenag-aceh-siapkan-enam-lokasi-rukyat-hilal
  8. Kanwil Kemenag Bengkulu. (2026). Pemantauan Hilal di Pantai Pasir Putih, Kota Bengkulu. Diakses pada 21 Juli 2026, dari https://kemenag.go.id/nasional/ini-88-titik-pemantauan-hilal-awal-zulhijah-1447-h-pada-17-mei-2026-W2QaI
  9. Kemenag RI. Mengenal Kalender Hisab Urfi (Tabular Islamic Calendar). Diakses pada 21 Juli 2026, dari https://jurnalbimasislam.kemenag.go.id/jbi/article/download/31/30