Laman ini dikhususkan untuk meletakan semua Source Code dalam beberapa Bahasa Pemrograman untuk Sistem Penanggalan Tanggal dan Waktu dalam Kalender Hijriah (Islam).
KONVERSI KALENDER MASEHI-HIJRIAH
1. Java
Program Konversi Penanggalan Hijriah dengan Java :
import java.util.*;import java.util.Date;public class KonversiPenanggalanHijriah {public static void main (String[] args) {String cbulan[]={"Muharram","Shafar","Rabiul Awal","Rabiul Akhir","Jumadil Awal","Jumadil Akhir","Rajab","Syaban","Ramadhan","Syawal","Dzulkaidah","Dzulhijjah"};String gbulan[] = {"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember" };Scanner MASUKAN = new java.util.Scanner(System.in);int zjd, zl, zn, zj, hari, tahun, tgl, bln, thn, bulan;System.out.println("KONVERSI TANGGAL MASEHI-HIJRIAH");Calendar cal = Calendar.getInstance();thn = cal.get(Calendar.YEAR);bln = cal.get(Calendar.MONTH)+1;tgl = cal.get(Calendar.DATE);if ((thn > 1582) || ((thn == 1582) && (bln > 10)) || ((thn == 1582) && (bln == 10)&& (tgl > 14))) {zjd = ((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4) + ((367 * (bln - 2 - 12 *(((bln - 14) / 12)))) / 12) - ((3 * (((thn + 4900 + ((bln - 14) / 12)) / 100)))/ 4) + tgl - 32075;} else {zjd = 367 * thn - ((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) + ((275 * bln) / 9)+ tgl + 1729777;}zl = zjd - 1948440 + 10632;zn = ((zl - 1) / 10631);zl = zl - 10631 * zn + 354;zj = ((10985 - zl) / 5316) * (((50 * zl) / 17719)) + ((zl / 5670)) * ((43 * zl) / 15238);zl = zl-(((30 - zj) / 15)) * (((17719 * zj) / 50))-((zj / 16)) * (((15238 * zj) / 43)) + 29;bulan = ((24 * zl) / 709);hari = zl-((709 * bulan) / 24);tahun = 30 * zn + zj - 30;System.out.println("Tanggal Masehi/Gregorian : "+tgl+" "+gbulan[bln-1]+" "+thn);System.out.println("Tanggal Hijriah : "+hari+" "+cbulan[bulan-1]+" "+tahun+" H");}}
2. C
Program Konversi Penanggalan Hijriah dengan Pemrograman C :
#include <stdio.h>#include <time.h>int main() {const char *cbulan[] = {"Muharram","Shafar","Rabiul Awal","Rabiul Akhir","Jumadil Awal","Jumadil Akhir","Rajab","Syaban","Ramadhan","Syawal","Dzulkaidah","Dzulhijjah"};const char *gbulan[] = {"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"};int zjd, zl, zn, zj, hari, tahun, tgl, bln, thn, bulan;printf("KONVERSI TANGGAL MASEHI - HIJRIAH\n");// Ambil tanggal hari initime_t now = time(NULL);struct tm *ltm = localtime(&now);thn = 1900 + ltm->tm_year; // Tahunbln = 1 + ltm->tm_mon; // Bulan (0-based → +1)tgl = ltm->tm_mday; // Hari// Hitung Julian Day Number (JDN)if ((thn > 1582) || ((thn == 1582) && (bln > 10)) || ((thn == 1582) && (bln == 10) && (tgl > 14))) {zjd = ((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4) +((367 * (bln - 2 - 12 * ((bln - 14) / 12))) / 12) -((3 * ((thn + 4900 + ((bln - 14) / 12)) / 100)) / 4) +tgl - 32075;} else {zjd = 367 * thn -((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) +((275 * bln) / 9) +tgl + 1729777;}// Konversi ke Hijriahzl = zjd - 1948440 + 10632;zn = (zl - 1) / 10631;zl = zl - 10631 * zn + 354;zj = ((10985 - zl) / 5316) * ((50 * zl) / 17719) +(zl / 5670) * ((43 * zl) / 15238);zl = zl - ((30 - zj) / 15) * ((17719 * zj) / 50) -(zj / 16) * ((15238 * zj) / 43) + 29;bulan = (24 * zl) / 709;hari = zl - ((709 * bulan) / 24);tahun = 30 * zn + zj - 30;// Output hasilprintf("Tanggal Masehi/Gregorian : %d %s %d\n", tgl, gbulan[bln-1], thn);printf("Tanggal Hijriah : %d %s %d H\n", hari, cbulan[bulan-1], tahun);return 0;}
3. C++
Program Konversi Penanggalan Hijriah dengan C++ :
#include <iostream>#include <ctime>#include <string>using namespace std;int main() {string cbulan[] = {"Muharram","Shafar","Rabiul Awal","Rabiul Akhir","Jumadil Awal","Jumadil Akhir","Rajab","Syaban","Ramadhan","Syawal","Dzulkaidah","Dzulhijjah"};string gbulan[] = {"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"};int zjd, zl, zn, zj, hari, tahun, tgl, bln, thn, bulan;cout << "KONVERSI TANGGAL MASEHI - HIJRIAH" << endl;// Ambil tanggal hari initime_t now = time(0);tm *ltm = localtime(&now);thn = 1900 + ltm->tm_year; // tahunbln = 1 + ltm->tm_mon; // bulan (0-based → +1)tgl = ltm->tm_mday; // hari// Hitung Julian Day Number (JDN)if ((thn > 1582) || ((thn == 1582) && (bln > 10)) || ((thn == 1582) && (bln == 10) && (tgl > 14))) {zjd = ((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4) +((367 * (bln - 2 - 12 * ((bln - 14) / 12))) / 12) -((3 * ((thn + 4900 + ((bln - 14) / 12)) / 100)) / 4) +tgl - 32075;} else {zjd = 367 * thn -((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) +((275 * bln) / 9) +tgl + 1729777;}// Konversi ke Hijriahzl = zjd - 1948440 + 10632;zn = (zl - 1) / 10631;zl = zl - 10631 * zn + 354;zj = ((10985 - zl) / 5316) * ((50 * zl) / 17719) +(zl / 5670) * ((43 * zl) / 15238);zl = zl - ((30 - zj) / 15) * ((17719 * zj) / 50) -(zj / 16) * ((15238 * zj) / 43) + 29;bulan = (24 * zl) / 709;hari = zl - ((709 * bulan) / 24);tahun = 30 * zn + zj - 30;// Output hasilcout << "Tanggal Masehi/Gregorian : " << tgl << " " << gbulan[bln-1] << " " << thn << endl;cout << "Tanggal Hijriah : " << hari << " " << cbulan[bulan-1] << " " << tahun << " H" << endl;return 0;}
4. C#
Program Konversi Penanggalan Hijriah dengan C++ :
using System;public class KonversiPenanggalanHijriah{public static void Main(string[] args){string[] cbulan = { "Muharram", "Shafar", "Rabiul Awal", "Rabiul Akhir", "Jumadil Awal","Jumadil Akhir", "Rajab", "Syaban", "Ramadhan", "Syawal", "Dzulkaidah", "Dzulhijjah" };string[] gbulan = { "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli","Agustus", "September", "Oktober", "November", "Desember" };int zjd, zl, zn, zj, hari, tahun, tgl, bln, thn, bulan;Console.WriteLine("KONVERSI TANGGAL MASEHI-HIJRIAH");DateTime now = DateTime.Now;thn = now.Year;bln = now.Month;tgl = now.Day;// Hitung Julian Day Numberif ((thn > 1582) || ((thn == 1582) && (bln > 10)) || ((thn == 1582) && (bln == 10) && (tgl > 14))){zjd = ((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4) +((367 * (bln - 2 - 12 * ((bln - 14) / 12))) / 12) -((3 * ((thn + 4900 + ((bln - 14) / 12)) / 100)) / 4) +tgl - 32075;}else{zjd = 367 * thn -((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) +((275 * bln) / 9) +tgl + 1729777;}// Konversi ke Hijriahzl = zjd - 1948440 + 10632;zn = (zl - 1) / 10631;zl = zl - 10631 * zn + 354;zj = ((10985 - zl) / 5316) * ((50 * zl) / 17719) +(zl / 5670) * ((43 * zl) / 15238);zl = zl - ((30 - zj) / 15) * ((17719 * zj) / 50) -(zj / 16) * ((15238 * zj) / 43) + 29;bulan = (24 * zl) / 709;hari = zl - ((709 * bulan) / 24);tahun = 30 * zn + zj - 30;// OutputConsole.WriteLine("Tanggal Masehi/Gregorian : {0} {1} {2}", tgl, gbulan[bln - 1], thn);Console.WriteLine("Tanggal Hijriah : {0} {1} {2} H", hari, cbulan[bulan - 1], tahun);}}
5. Python
Program Konversi Penanggalan Hijriah dengan Python :
import datetimeimport mathdef konversi_hijriah():cbulan = ["Muharram", "Shafar", "Rabiul Awal", "Rabiul Akhir", "Jumadil Awal","Jumadil Akhir", "Rajab", "Syaban", "Ramadhan", "Syawal","Dzulkaidah", "Dzulhijjah"]gbulan = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli","Agustus", "September", "Oktober", "November", "Desember"]print("KONVERSI TANGGAL MASEHI-HIJRIAH")# --- Mengambil Tanggal Masehi Saat Ini ---today = datetime.date.today()thn = today.yearbln = today.monthtgl = today.dayzjd, zl, zn, zj, hari, tahun, bulan = 0, 0, 0, 0, 0, 0, 0if (thn > 1582) or ((thn == 1582) and (bln > 10)) or ((thn == 1582) and (bln == 10) and (tgl > 14)):# Gregorian Calendarzjd = math.floor((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4 + \(367 * (bln - 2 - 12 * (((bln - 14) / 12)))) / 12 - \(3 * (((thn + 4900 + ((bln - 14) / 12)) / 100))) / 4 + \tgl - 32075)else:# Julian Calendarzjd = math.floor(367 * thn - ((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) + \((275 * bln) / 9) + \tgl + 1729777)# --- Konversi Hari Julian ke Tanggal Hijriah ---zl = int(zjd - 1948440 + 10632)zn = int((zl - 1) / 10631)zl = int(zl - 10631 * zn + 354)zj = int(((10985 - zl) // 5316) * (((50 * zl) // 17719)) + ((zl // 5670)) * ((43 * zl) // 15238))zl = int(zl - (((30 - zj) // 15)) * (((17719 * zj) // 50)) - ((zj // 16)) * (((15238 * zj) // 43)) + 29)bulan = (24 * zl) // 709hari = zl - ((709 * bulan) // 24)tahun = 30 * zn + zj - 30# --- Output Hasil ---print(f"Tanggal Masehi/Gregorian : {tgl} {gbulan[bln - 1]} {thn}")print(f"Tanggal Hijriah : {hari} {cbulan[bulan - 1]} {tahun} H")if __name__ == "__main__":konversi_hijriah()
6. Ruby
Program Konversi Penanggalan Hijriah dengan Ruby :
require 'date'def konversi_hijriahcbulan = ["Muharram", "Shafar", "Rabiul Awal", "Rabiul Akhir", "Jumadil Awal","Jumadil Akhir", "Rajab", "Syaban", "Ramadhan", "Syawal","Dzulkaidah", "Dzulhijjah"]gbulan = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli","Agustus", "September", "Oktober", "November", "Desember"]puts "KONVERSI TANGGAL MASEHI-HIJRIAH"# --- Mengambil Tanggal Masehi Saat Ini ---today = Date.todaythn = today.yearbln = today.monthtgl = today.dayzjd = zl = zn = zj = hari = tahun = bulan = 0# --- Konversi ke Julian Day Number (Gregorian vs Julian Calendar) ---if (thn > 1582) || (thn == 1582 && bln > 10) || (thn == 1582 && bln == 10 && tgl > 14)zjd = ((1461 * (thn + 4800 + ((bln - 14) / 12.0))) / 4.0) +((367 * (bln - 2 - 12 * ((bln - 14) / 12.0))) / 12.0) -((3 * ((thn + 4900 + ((bln - 14) / 12.0)) / 100.0)) / 4.0) +tgl - 32075elsezjd = 367 * thn -((7 * (thn + 5001 + ((bln - 9) / 7.0))) / 4.0) +((275 * bln) / 9.0) + tgl + 1729777endzjd = zjd.floor# --- Konversi Hari Julian ke Tanggal Hijriah ---zl = (zjd - 1948440 + 10632).to_izn = ((zl - 1) / 10631).to_izl = (zl - 10631 * zn + 354).to_izj = (((10985 - zl) / 5316).to_i * ((50 * zl) / 17719).to_i) +((zl / 5670).to_i * ((43 * zl) / 15238).to_i)zl = (zl - (((30 - zj) / 15).to_i * ((17719 * zj) / 50).to_i) -((zj / 16).to_i * ((15238 * zj) / 43).to_i) + 29).to_ibulan = ((24 * zl) / 709).to_ihari = zl - ((709 * bulan) / 24).to_itahun = 30 * zn + zj - 30# --- Output Hasil ---puts "Tanggal Masehi/Gregorian : #{tgl} #{gbulan[bln - 1]} #{thn}"puts "Tanggal Hijriah : #{hari} #{cbulan[bulan - 1]} #{tahun} H"end# Jalankan programkonversi_hijriah
7. Dart
Program Konversi Penanggalan Hijriah dengan Dart :
import 'dart:core';void main() {List<String> cbulan = ["Muharram","Shafar","Rabiul Awal","Rabiul Akhir","Jumadil Awal","Jumadil Akhir","Rajab","Syaban","Ramadhan","Syawal","Dzulkaidah","Dzulhijjah"];List<String> gbulan = ["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"];print("KONVERSI TANGGAL MASEHI → HIJRIAH\n");// Ambil tanggal sekarangDateTime now = DateTime.now();int tgl = now.day;int bln = now.month;int thn = now.year;int zjd, zl, zn, zj, hari, tahun, bulan;// Rumus Julian Day Numberif ((thn > 1582) ||((thn == 1582) && (bln > 10)) ||((thn == 1582) && (bln == 10) && (tgl > 14))) {zjd = ((1461 * (thn + 4800 + ((bln - 14) ~/ 12))) ~/ 4) +((367 * (bln - 2 - 12 * (((bln - 14) ~/ 12)))) ~/ 12) -((3 * (((thn + 4900 + ((bln - 14) ~/ 12)) ~/ 100))) ~/ 4) +tgl -32075;} else {zjd = 367 * thn -((7 * (thn + 5001 + ((bln - 9) ~/ 7))) ~/ 4) +((275 * bln) ~/ 9) +tgl +1729777;}zl = zjd - 1948440 + 10632;zn = ((zl - 1) ~/ 10631);zl = zl - 10631 * zn + 354;zj = (((10985 - zl) ~/ 5316) * ((50 * zl) ~/ 17719)) +((zl ~/ 5670) * ((43 * zl) ~/ 15238));zl = zl -(((30 - zj) ~/ 15) * ((17719 * zj) ~/ 50)) -((zj ~/ 16) * ((15238 * zj) ~/ 43)) +29;bulan = ((24 * zl) ~/ 709);hari = zl - ((709 * bulan) ~/ 24);tahun = 30 * zn + zj - 30;print("Tanggal Masehi (Gregorian) : $tgl ${gbulan[bln - 1]} $thn");print("Tanggal Hijriah : $hari ${cbulan[bulan - 1]} $tahun H");}
8. Golang
Program Konversi Penanggalan Hijriah dengan Go(lang) :
package mainimport ("fmt""time")func main() {cbulan := [12]string{"Muharram", "Shafar", "Rabiul Awal", "Rabiul Akhir","Jumadil Awal", "Jumadil Akhir", "Rajab", "Syaban","Ramadhan", "Syawal", "Dzulkaidah", "Dzulhijjah",}gbulan := [12]string{"Januari", "Februari", "Maret", "April", "Mei", "Juni","Juli", "Agustus", "September", "Oktober", "November", "Desember",}fmt.Println("KONVERSI TANGGAL MASEHI-HIJRIAH")// Ambil tanggal saat ininow := time.Now()thn := now.Year()bln := int(now.Month())tgl := now.Day()var zjd, zl, zn, zj, hari, tahun, bulan int// Konversi tanggal Gregorian ke Julian Day Numberif (thn > 1582) || (thn == 1582 && bln > 10) || (thn == 1582 && bln == 10 && tgl > 14) {zjd = ((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4) +((367 * (bln - 2 - 12*((bln-14)/12))) / 12) -((3 * (((thn + 4900 + ((bln - 14) / 12)) / 100))) / 4) +tgl - 32075} else {zjd = 367*thn -((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) +((275 * bln) / 9) + tgl + 1729777}// Konversi Julian ke Hijriahzl = zjd - 1948440 + 10632zn = (zl - 1) / 10631zl = zl - 10631*zn + 354zj = ((10985 - zl) / 5316) * ((50 * zl) / 17719)zj += (zl / 5670) * ((43 * zl) / 15238)zl = zl - (((30 - zj) / 15) * ((17719 * zj) / 50))zl -= ((zj / 16) * ((15238 * zj) / 43)) - 29bulan = (24 * zl) / 709hari = zl - ((709 * bulan) / 24)tahun = 30*zn + zj - 30fmt.Printf("Tanggal Masehi/Gregorian : %d %s %d\n", tgl, gbulan[bln-1], thn)fmt.Printf("Tanggal Hijriah : %d %s %d H\n", hari, cbulan[bulan-1], tahun)}
9. JavaScript (Node.js / Without HTML)
Program Konversi Penanggalan Hijriah dengan JavaScript :
import datetimeimport mathdef konversi_hijriah():cbulan = ["Muharram", "Shafar", "Rabiul Awal", "Rabiul Akhir", "Jumadil Awal","Jumadil Akhir", "Rajab", "Syaban", "Ramadhan", "Syawal","Dzulkaidah", "Dzulhijjah"]gbulan = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli","Agustus", "September", "Oktober", "November", "Desember"]print("KONVERSI TANGGAL MASEHI-HIJRIAH")# --- Mengambil Tanggal Masehi Saat Ini ---today = datetime.date.today()thn = today.yearbln = today.monthtgl = today.dayzjd, zl, zn, zj, hari, tahun, bulan = 0, 0, 0, 0, 0, 0, 0if (thn > 1582) or ((thn == 1582) and (bln > 10)) or ((thn == 1582) and (bln == 10) and (tgl > 14)):# Gregorian Calendarzjd = math.floor((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4 + \(367 * (bln - 2 - 12 * (((bln - 14) / 12)))) / 12 - \(3 * (((thn + 4900 + ((bln - 14) / 12)) / 100))) / 4 + \tgl - 32075)else:# Julian Calendarzjd = math.floor(367 * thn - ((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) + \((275 * bln) / 9) + \tgl + 1729777)# --- Konversi Hari Julian ke Tanggal Hijriah ---zl = int(zjd - 1948440 + 10632)zn = int((zl - 1) / 10631)zl = int(zl - 10631 * zn + 354)zj = int(((10985 - zl) // 5316) * (((50 * zl) // 17719)) + ((zl // 5670)) * ((43 * zl) // 15238))zl = int(zl - (((30 - zj) // 15)) * (((17719 * zj) // 50)) - ((zj // 16)) * (((15238 * zj) // 43)) + 29)bulan = (24 * zl) // 709hari = zl - ((709 * bulan) // 24)tahun = 30 * zn + zj - 30# --- Output Hasil ---print(f"Tanggal Masehi/Gregorian : {tgl} {gbulan[bln - 1]} {thn}")print(f"Tanggal Hijriah : {hari} {cbulan[bulan - 1]} {tahun} H")if __name__ == "__main__":konversi_hijriah()
10. JavaScript (With HTML)
<!DOCTYPE html><html lang="id"><head><meta charset="UTF-8" /><title>Konversi Masehi ke Hijriah</title><style>body {font-family: Arial, sans-serif;margin: 30px;background: #f5f5f5;}h2 {color: #2c3e50;}.result {margin-top: 20px;padding: 15px;background: #fff;border-radius: 8px;box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);}.date {font-size: 18px;margin: 5px 0;}</style></head><body><h2>Konversi Tanggal Masehi ke Hijriah</h2><div class="result"><div class="date" id="gregorian"></div><div class="date" id="hijri"></div></div><script>function konversiMasehiKeHijriah() {const cbulan = ["Muharram","Shafar","Rabiul Awal","Rabiul Akhir","Jumadil Awal","Jumadil Akhir","Rajab","Syaban","Ramadhan","Syawal","Dzulkaidah","Dzulhijjah",];const gbulan = ["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember",];const today = new Date();let thn = today.getFullYear();let bln = today.getMonth() + 1;let tgl = today.getDate();let zjd, zl, zn, zj, bulan, hari, tahun;// Hitung Julian Day Number (JDN)if (thn > 1582 ||(thn === 1582 && bln > 10) ||(thn === 1582 && bln === 10 && tgl > 14)) {zjd = Math.floor((1461 * (thn + 4800 + (bln - 14) / 12)) / 4 +(367 * (bln - 2 - 12 * ((bln - 14) / 12))) / 12 -(3 * ((thn + 4900 + (bln - 14) / 12) / 100)) / 4 +tgl -32075);} else {zjd = Math.floor(367 * thn -(7 * (thn + 5001 + (bln - 9) / 7)) / 4 +(275 * bln) / 9 +tgl +1729777);}// Algoritma konversi ke Hijriahzl = Math.floor(zjd - 1948440 + 10632);zn = Math.floor((zl - 1) / 10631);zl = zl - 10631 * zn + 354;zj =Math.floor((10985 - zl) / 5316) * Math.floor((50 * zl) / 17719) +Math.floor(zl / 5670) * Math.floor((43 * zl) / 15238);zl =zl -Math.floor((30 - zj) / 15) * Math.floor((17719 * zj) / 50) -Math.floor(zj / 16) * Math.floor((15238 * zj) / 43) +29;bulan = Math.floor((24 * zl) / 709);hari = Math.floor(zl - Math.floor((709 * bulan) / 24));tahun = 30 * zn + zj - 30;// Tampilkan ke HTMLdocument.getElementById("gregorian").innerText = `Tanggal Masehi/Gregorian : ${tgl} ${gbulan[bln - 1]} ${thn}`;document.getElementById("hijri").innerText = `Tanggal Hijriah : ${hari} ${cbulan[bulan - 1]} ${tahun} H`;}// Jalankan saat halaman dibukakonversiMasehiKeHijriah();</script></body></html>
Hasil :
11. PHP
Program Konversi Penanggalan Hijriah dengan PHP :
<?phpecho "KONVERSI TANGGAL MASEHI → HIJRIAH\n\n";$cbulan = ["Muharram", "Shafar", "Rabiul Awal", "Rabiul Akhir","Jumadil Awal", "Jumadil Akhir", "Rajab", "Syaban","Ramadhan", "Syawal", "Dzulkaidah", "Dzulhijjah"];$gbulan = ["Januari", "Februari", "Maret", "April", "Mei", "Juni","Juli", "Agustus", "September", "Oktober", "November", "Desember"];// Ambil tanggal sekarang$thn = (int)date("Y");$bln = (int)date("n");$tgl = (int)date("j");// Hitung Julian Day Numberif (($thn > 1582) || (($thn == 1582) && ($bln > 10)) || (($thn == 1582) && ($bln == 10) && ($tgl > 14))) {$zjd = intdiv(1461 * ($thn + 4800 + intdiv(($bln - 14), 12)), 4)+ intdiv(367 * ($bln - 2 - 12 * intdiv(($bln - 14), 12)), 12)- intdiv(3 * intdiv(($thn + 4900 + intdiv(($bln - 14), 12)), 100), 4)+ $tgl - 32075;} else {$zjd = 367 * $thn- intdiv(7 * ($thn + 5001 + intdiv(($bln - 9), 7)), 4)+ intdiv(275 * $bln, 9)+ $tgl + 1729777;}// Konversi ke Hijriah$zl = $zjd - 1948440 + 10632;$zn = intdiv(($zl - 1), 10631);$zl = $zl - 10631 * $zn + 354;$zj = intdiv(intdiv((10985 - $zl), 5316) * intdiv((50 * $zl), 17719)+ intdiv($zl, 5670) * intdiv((43 * $zl), 15238), 1);$zl = $zl- intdiv(intdiv((30 - $zj), 15) * intdiv((17719 * $zj), 50), 1)- intdiv(intdiv($zj, 16) * intdiv((15238 * $zj), 43), 1)+ 29;$bulan = intdiv(24 * $zl, 709);$hari = $zl - intdiv(709 * $bulan, 24);$tahun = 30 * $zn + $zj - 30;// Validasi agar tidak keluar dari arrayif ($bulan < 1) $bulan = 1;if ($bulan > 12) $bulan = 12;// Cetak hasilecho "Tanggal Masehi (Gregorian) : $tgl " . $gbulan[$bln - 1] . " $thn\n";echo "Tanggal Hijriah : $hari " . $cbulan[$bulan - 1] . " $tahun H\n";?>
PERHITUNGAN SISTEM PENANGGALAN DENGAN HIJRIAH
1. Python
Program Tanggal dan Waktu dengan Penanggalan Hijriah menggunakan Python :
import datetimeimport mathdef konversi_hijriah():cbulan = ["Muharram", "Shafar", "Rabiul Awal", "Rabiul Akhir", "Jumadil Awal","Jumadil Akhir", "Rajab", "Syaban", "Ramadhan", "Syawal","Dzulkaidah", "Dzulhijjah"]gbulan = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli","Agustus", "September", "Oktober", "November", "Desember"]print("KONVERSI TANGGAL MASEHI-HIJRIAH")print("=" * 45)# --- Ambil tanggal hari ini ---today = datetime.date.today()thn = today.yearbln = today.monthtgl = today.day# --- Hitung Julian Day Number (JDN) ---if (thn > 1582) or ((thn == 1582) and (bln > 10)) or ((thn == 1582) and (bln == 10) and (tgl > 14)):zjd = math.floor((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4 +(367 * (bln - 2 - 12 * ((bln - 14) / 12))) / 12 -(3 * ((thn + 4900 + ((bln - 14) / 12)) / 100)) / 4 +tgl - 32075)else:zjd = math.floor(367 * thn - ((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) +((275 * bln) / 9) + tgl + 1729777)# --- Konversi ke Hijriah ---zl = int(zjd - 1948440 + 10632)zn = int((zl - 1) / 10631)zl = int(zl - 10631 * zn + 354)zj = int(((10985 - zl) // 5316) * (((50 * zl) // 17719)) + ((zl // 5670)) * ((43 * zl) // 15238))zl = int(zl - (((30 - zj) // 15)) * (((17719 * zj) // 50)) -((zj // 16)) * (((15238 * zj) // 43)) + 29)blnHijri = (24 * zl) // 709tglHijri = zl - ((709 * blnHijri) // 24)tahunHijri = 30 * zn + zj - 30# --- Hitung hari ke dan persentase dalam tahun Hijriah ---# Tahun kabisat Hijriah: 11 tahun kabisat dalam 30 tahun → 355 hari# Rumus: tahun mod 30 ∈ {2,5,7,10,13,16,18,21,24,26,29}kabisat_hijri = tahunHijri % 30 in [2, 5, 7, 10, 13, 16, 18, 21, 24, 26, 29]total_hari_hijri = 355 if kabisat_hijri else 354# Perkiraan hari ke dalam tahun Hijriah (berdasarkan bulan dan tanggal)hari_ke_hijri = 0for i in range(blnHijri - 1):if i % 2 == 0: # bulan ganjil = 30 harihari_ke_hijri += 30else: # bulan genap = 29 harihari_ke_hijri += 29hari_ke_hijri += tglHijripersen_hijri = (hari_ke_hijri / total_hari_hijri) * 100sisa_hari = total_hari_hijri - hari_ke_hijripersen_mundur = 100 - persen_hijri# --- Output hasil ---print(f"Tanggal Masehi/Gregorian : {tgl} {gbulan[bln - 1]} {thn}")print(f"Tanggal Hijriah : {tglHijri} {cbulan[blnHijri - 1]} {tahunHijri} H")print(f"Tahun Hijriah Kabisat : {'Ya' if kabisat_hijri else 'Tidak'}")print(f"Hari ke (Kalender Hijriah): {hari_ke_hijri} dari {total_hari_hijri} hari")print(f"Sisa Hari (Tahun depan) : {sisa_hari} hari")print(f"Persentase dalam Tahun : {persen_hijri:.6f}%")print(f"Persentase Hitung Mundur : {persen_mundur:.6f}%")print()print(f"Day-{hari_ke_hijri} ({persen_hijri:.4f}%)")print("=" * 45)if __name__ == "__main__":konversi_hijriah()
2. Ruby
Program Tanggal dan Waktu dengan Penanggalan Hijriah menggunakan Ruby :
https://www.blogger.com/blog/page/edit/2490536221435885189/3537280352693159859
Untuk melihat Source Code yang Penanggalan Umum, silakan lihat di sini.