Javascript Function Konversi Hijriyah ke Masehi dan Sebaliknya

Berikut adalah fungsi untuk Konversi dari tanggal Masehi ke Hijriyah dan sebaliknya. Awalnya aku dapat fungsi ini dari alamat di sini. Tetapi kode program ditulis dalam format bahasa Pascal (Delphi). Untuk saat ini kode program tersebut telah aku terjemahkan ke dalam javascript. Kedepan mungkin aku mencoba menjadikannya sebagai plugin wordpress (kalo ndak ada halangan).
Mungkin script yang aku modifikasi ini perlu perbaikan lebih lanjut. Jadi mohon kritik dan sarannya kalo ada kekurangan :). Semoga bermanfaat.


function ConvertDate(HijriToMasehi,y,m,d)
{
  /*
  PARAMETER :
    HijriToMasehi (true,false)
    y (yyyy)
    m (01-12)
    d (01-31)
  */

  var jd,L,N,i,J,K;
  var Rm,Rd,Ry; //result
  var Tgl;
  var y2,m2,d2;

  y2=y; m2=m; d2=d;
  /* HijriyahDiff = 0 atau bisa +1 atau -1
     untuk menyesuaikan jika kemungkinan berbeda dengan ruqyah */
  HijriyahDiff = 0;

  d2 = d2 + HijriyahDiff;

  if (HijriToMasehi) // Konversi Hijriyah ke Masehi
  {
    jd = parseInt((11*y2+3)/30)+354*y2+30*m2-parseInt((m2-1)/2)+
         d2+1948440-385;

    if (jd >2299160)
    {
      L  = jd+68569;
      N  = parseInt((4*L)/146097);
      L  = L-parseInt((146097*N+3)/4);
      i  = parseInt((4000*(L+1))/1461001);
      L  = L-parseInt((1461*i)/4)+31;
      J  = parseInt((80*L)/2447);
      Rd = L-parseInt((2447*J)/80);
      L  = parseInt(J/11);
      Rm = J+2-12*L;
      Ry = 100*(N-49)+i+L;
    }
    else
    {
      J  = jd+1402;
      K  = parseInt((J-1)/1461);
      L  = J-1461*k;
      N  = parseInt((L-1)/365)-parseInt(L/1461);
      i  = L-365*N+30;
      J  = parseInt((80*i)/2447);
      Rd = i-parseInt((2447*J)/80);
      i  = parseInt(J/11);
      Rm = J+2-12*i;
      Ry = 4*K+N+i-4716;
    }
  }
  else // Konversi Masehi ke Hijriyah
  {
      if ((y2>1582) || ((y2=1582) && (m2>10)) || ((y2=1582) &&
         (m2=10) && (d2>14)))
      { jd =  parseInt((1461*(y2+4800+parseInt((m2-14)/12)))/4)+
              parseInt((367*(m2-2-12*(parseInt((m2-14)/12))))/12)-
              parseInt((3*(parseInt((y2+4900+parseInt((m2-14)/12))/
              100)))/4)+d2-32075
      }
      else
      { jd = 367*y2-parseInt((7*(y2+5001+parseInt((m2-9)/7)))/4)+
             parseInt((275*m2)/9)+d2+1729777; }

      L  = jd-1948440+10632;
      N  = parseInt((L-1)/10631);
      L  = L-10631*N+354;
      J  = (parseInt((10985-L)/5316))*(parseInt((50*L)/17719))+
           (parseInt(L/5670))*(parseInt((43*L)/15238));
      L  = L-(parseInt((30-J)/15))*(parseInt((17719*J)/50))-
           (parseInt(J/16))*(parseInt((15238*J)/43))+29;
      Rm = parseInt((24*L)/709);
      Rd = L-parseInt((709*Rm)/24);
      Ry = 30*N+J-30;
  }
  // Hasil fungsi Tanggal, Bulan dan Tahun
  return new Date(Ry, Rm, Rd)
}

function getHijri()
{
  var arrHMonth = new Array (“Muharram”,“Safar”,“Rabiul awal”,
                             “Rabiul akhir”,“Jumadil awal”,
                             “Jumadil akhir”,“Rajab”,“Syaban”,
                             “Ramadhan”,“Syawal”,“Dzulkaidah”,
                             “Dzulhijjah”);

  var DO = new Date();
  var tglH = ConvertDate(false, DO.getFullYear(), DO.getMonth(),
             DO.getDate());

  HY = tglH.getFullYear();
  HM = tglH.getMonth();
  HD = tglH.getDate();

  return HD + ” “ + arrHMonth[HM] + ” “ + HY + ” H”;
}

Popularity: 34% [?]


Leave a Reply

156 views