建造(神圣)

Islamic Date (Hijiri)

有人知道使用伊斯兰(哈吉里)日期显示当前日期的方法吗?最好在PHP and/or Javascript.

具体是这种格式? “10 萨法尔,1442”

我一直在寻找,寻找,寻找。我可以找到其他人使用它,当我搜索“显示 Hajiri 约会”时,我得到了一堆关于穆斯林约会的网站……显然不是我要找的。

我不需要任何特别的东西,只需要根据网站访问者所在位置确定的日期。

您必须检查 this library。 他们声称 "一个 Python 包,使用沙特阿拉伯的 Umm al-Qura 日历在 Hijri 和 Gregorian 日期之间准确转换。"

>> from hijri_converter import convert
>>> hijri = convert.Gregorian(1982, 12, 2).to_hijri() 
>>> hijri.datetuple() 
(1403, 2, 17) 
>>> hijri.dmyformat()
 '17/02/1403'
 >>> hijri.month_name()
 'Safar' 
>>> hijri.day_name() 
'Thursday' 
>>> hijri.notation() 
'AH'

Moment.js (https://ej2.syncfusion.com/documentation/calendar/islamic-calendar/) 有回历 Javascript 库; 'hijri calendar php' 的快速 Google 也可以找到该语言的许多库。

如果您有兴趣了解它们的工作原理,也许是实施您自己的解决方案,我推荐这本书 Calendrical Calculations by Reingold and Dershowitz,其中有一章是关于伊斯兰历的,并且包含可用于近似计算的公式它。这包括对观测准确性的尝试,即使用一些相对复杂的天文方程式来计算月球合相的时间,并以高精度计算当前日期附近的日期。这本书也附带了源代码,尽管是 Lisp 语言(这本书源于其中一位作者对 Emacs 的希伯来日历的最初实现)。

这是一种在给定公历日期的情况下以请求的格式显示回历日期的方法。

function myHijriDateFormat(date) {
let startDate= new Date(date),
    c= 'en-u-ca-islamic-umalqura-nu-latn',  // use 'islamic-umalqura' calendar for the islamic date
    n='numeric',
    iDay  =new Intl.DateTimeFormat(c,{day  :n}).format(startDate),
    iMonth=new Intl.DateTimeFormat(c,{month:'long'}).format(startDate),
    iYear =new Intl.DateTimeFormat(c,{year :n}).format(startDate).split(" ")[0];

    return iDay+" "+iMonth+", "+iYear;
}
    console.log(myHijriDateFormat(new Date(Date.now()))); // today's date
    console.log(myHijriDateFormat("2022-04-02"));         // first Ramadan 2022