日历函数

目录

  • cal_days_in_month — 返回给定年份和日历的月份中的天数
  • cal_from_jd — 将儒略日计数转换为支持的日历
  • cal_info — 返回有关特定日历的信息
  • cal_to_jd — 将支持的日历转换为儒略日计数
  • easter_date — 获取给定年份的复活节午夜的 Unix 时间戳
  • easter_days — 获取给定年份复活节落在 3 月 21 日后的天数
  • frenchtojd — 将法国共和历中的日期转换为儒略日计数
  • gregoriantojd — 将公历日期转换为儒略日计数
  • jddayofweek — 返回星期几
  • jdmonthname — 返回月份名称
  • jdtofrench — 将儒略日计数转换为法国共和历
  • jdtogregorian — 将儒略日计数转换为公历日期
  • jdtojewish — 将儒略日计数转换为犹太历日期
  • jdtojulian — 将儒略日计数转换为儒略历日期
  • jdtounix — 将儒略日转换为 Unix 时间戳
  • jewishtojd — 将犹太历中的日期转换为儒略日计数
  • juliantojd — 将儒略历日期转换为儒略日计数
  • unixtojd — 将 Unix 时间戳转换为儒略日
添加笔记

用户贡献的笔记 10 个笔记

david dot scourfield at llynfi dot co dot uk
16 年前
我之前创建了这个函数,最近又需要它,所以不得不浏览一些旧文件才能找到它。我想把它贴在这里,以防其他人发现它有用。

<?php

/*
* 计算给定年份的英国银行假日(英格兰和威尔士)的函数。
*
* 由 David Scourfield 创建于 2006 年 8 月 7 日,并发布到公共领域。
* 任何人都可以使用和/或修改此代码。
*
* 用法:
*
* array calculateBankHolidays(int $yr)
*
* 参数
*
* $yr = 年份的 4 位数字表示(例如 1997)。
*
* 返回值
*
* 返回一个字符串数组,其中每个字符串都是银行假日的日期,格式为“yyyy-mm-dd”。
*
* 请参见下面的示例
*
*/

function calculateBankHolidays($yr) {

$bankHols = Array();

// 新年:
switch ( date("w", strtotime("$yr-01-01 12:00:00")) ) {
case
6:
$bankHols[] = "$yr-01-03";
break;
case
0:
$bankHols[] = "$yr-01-02";
break;
default:
$bankHols[] = "$yr-01-01";
}

// 复活节星期五:
$bankHols[] = date("Y-m-d", strtotime( "+".(easter_days($yr) - 2)." days", strtotime("$yr-03-21 12:00:00") ));

// 复活节星期一:
$bankHols[] = date("Y-m-d", strtotime( "+".(easter_days($yr) + 1)." days", strtotime("$yr-03-21 12:00:00") ));

// 五一劳动节:
if ($yr == 1995) {
$bankHols[] = "1995-05-08"; // 欧洲胜利日 50 周年纪念年的例外
} else {
switch (
date("w", strtotime("$yr-05-01 12:00:00"))) {
case
0:
$bankHols[] = "$yr-05-02";
break;
case
1:
$bankHols[] = "$yr-05-01";
break;
case
2:
$bankHols[] = "$yr-05-07";
break;
case
3:
$bankHols[] = "$yr-05-06";
break;
case
4:
$bankHols[] = "$yr-05-05";
break;
case
5:
$bankHols[] = "$yr-05-04";
break;
case
6:
$bankHols[] = "$yr-05-03";
break;
}
}

// 复活节星期一:
if ($yr == 2002) { // 例外年
$bankHols[] = "2002-06-03";
$bankHols[] = "2002-06-04";
} else {
switch (
date("w", strtotime("$yr-05-31 12:00:00"))) {
case
0:
$bankHols[] = "$yr-05-25";
break;
case
1:
$bankHols[] = "$yr-05-31";
break;
case
2:
$bankHols[] = "$yr-05-30";
break;
case
3:
$bankHols[] = "$yr-05-29";
break;
case
4:
$bankHols[] = "$yr-05-28";
break;
case
5:
$bankHols[] = "$yr-05-27";
break;
case
6:
$bankHols[] = "$yr-05-26";
break;
}
}

// 夏日银行假日:
switch (date("w", strtotime("$yr-08-31 12:00:00"))) {
case
0:
$bankHols[] = "$yr-08-25";
break;
case
1:
$bankHols[] = "$yr-08-31";
break;
case
2:
$bankHols[] = "$yr-08-30";
break;
case
3:
$bankHols[] = "$yr-08-29";
break;
case
4:
$bankHols[] = "$yr-08-28";
break;
case
5:
$bankHols[] = "$yr-08-27";
break;
case
6:
$bankHols[] = "$yr-08-26";
break;
}

// 圣诞节:
switch ( date("w", strtotime("$yr-12-25 12:00:00")) ) {
case
5:
$bankHols[] = "$yr-12-25";
$bankHols[] = "$yr-12-28";
break;
case
6:
$bankHols[] = "$yr-12-27";
$bankHols[] = "$yr-12-28";
break;
case
0:
$bankHols[] = "$yr-12-26";
$bankHols[] = "$yr-12-27";
break;
default:
$bankHols[] = "$yr-12-25";
$bankHols[] = "$yr-12-26";
}

// 千禧年夜
if ($yr == 1999) {
$bankHols[] = "1999-12-31";
}

return
$bankHols;

}

/*
* 示例:
*
*/

header("Content-type: text/plain");

$bankHolsThisYear = calculateBankHolidays(2007);

print_r($bankHolsThisYear);

?>

将输出以下结果

数组
(
[0] => 2007-01-01
[1] => 2007-04-06
[2] => 2007-04-09
[3] => 2007-05-07
[4] => 2007-05-28
[5] => 2007-08-27
[6] => 2007-12-25
[7] => 2007-12-26
)
obaida dot habboush at gmail dot com
6 年前
您好,

函数名有误

在类 HijriCalendar 中 {
.
.
.
.
.
.
函数 HijriToGregorian($m, $d, $y)
{
//// jd_to_cal -> 应为 -> cal_to_jd
return jd_to_cal(CAL_GREGORIAN, HijriCalendar::HijriToJD($m, $d, $y));
}
}
jthome at fcgov dot com
20 年前
遇到了与 curlee 类似的问题,不过我需要创建一个 JDE_ERP 日期。[格式为 CYYDDD]

<?php

function jde_date_create($month, $day, $year){
/*
* 注意:$month 和 $day 不能有前导零,
* $year 必须是 'YYYY' 格式
*/
$jde_year_prefix = substr($year, 0, 1) - 1;
$jde_year_suffix = substr($year, -2);

// 注意 mktime 的有效年份是 1902-2037
$timestamp = mktime(0,0,0,$month, $day, $year);
$baseline_timestamp = mktime(0,0,0,1,0,$year);

$day_count = round(($timestamp - $baseline_timestamp)/86400);
$day_count_padded = str_pad($day_count,3,"0",STR_PAD_LEFT);

return (
$jde_year_prefix . $jde_year_suffix . $day_count_padded);

}

echo
jde_date_create(6,25,2000);// 将返回 '103176'

?>

--
Jim
simon at chronolabs dot org dot au
16 年前
这是埃及历法,它是世界上第一个 365 天的历法。它没有闰年,这使得它有点不精确,但你可以根据需要自行实现这个代码,这是另一种实现圆形浮点代码的方案,它是一个用于生成日期编解码器的通用代码,你可以用它来制作几乎所有类型的日历。 $pweight 是基于我对碳年代戳等研究的,以及埃及纪元或 PPO 制定的时间。有些人认为是几千年,而另一些人则认为埃及纪元大约在 30000 年前!这是基于雕像和纪念碑上的潮汐标记,在建造后,由于海平面上升,这些地区被水覆盖了。

<?php

print_r
(EgyptCalendar(time(),0));

function
EgyptianCalendar($unix_time, $gmt,
$poffset = '1970-02-26 7:45 PM',
$pweight = '-9777600.22222222223',
$defiency='nonedeficient',
$timeset= array("hours" => 24,
"minutes" => 60,
"seconds" => 60))
{
// Code Segment 1 – Calculate Floating Point
$tme = $unix_time;

if (
$gmt>0){$gmt=-$gmt;} else {$gmt=abs($gmt);}

$ptime = strtotime($poffset)+(60*60*gmt);
$weight = $pweight+(1*gmt);

$egypt_xa = ($tme)/(24*60*60);
$egypt_ya = $ptime/(24*60*60);
$egypt = (($egypt_xa -$egypt_ya) -
$weight)+(microtime/999999);

// Code Segment 2 – Set month day arrays
$nonedeficient = array(
"seq1" => array(30,30,30,30,30,30,30,30,30,30,30,30,5));

$monthnames = array(
"seq1" => array('Thoth','Phaophi','Athyr','Choiak',
'Tybi', 'Mecheir','Phamenoth','Pharmuthi','Pachon',
'Payni','Epiphi','Mesore','epagomenai'));

$monthusage = isset($defiency) ? ${$defiency} : $deficient;

// Code Segment 3 – Calculate month number, day number
foreach($monthusage as $key => $item){
$i++;
foreach(
$item as $numdays){
$ttl_num=$ttl_num+$numdays;
$ttl_num_months++;
}
}

$revolutionsperyear = $ttl_num / $i;
$numyears = egyptd((floor($egypt) / $revolutionsperyear),0);
$avg_num_month = $ttl_num_months/$i;
$jtl = abs(abs($egypt) -
ceil($revolutionsperyear*($numyears+1)));

while(
$month==0){
$day=0;
$u=0;
foreach(
$monthusage as $key => $item){
$t=0;
foreach(
$item as $numdays){
$t++;
$tt=0;
for(
$sh=1;$sh<=$numdays;$sh++){
$ii=$ii+1;
$tt++;
if (
$ii==floor($jtl)){
if (
$egypt>0){
$daynum = $tt;
$month = $t;
} else {
$daynum = $numdays-$tt;
$month = $avg_num_month-$t;
}
$sequence = $key;
$nodaycount=true;
}
}
if (
$nodaycount==false)
$day++;
}
$u++;
}
}

//$numyears = abs($numyears);

$timer = substr($egypt, strpos($egypt,'.')+1,
strlen($egypt)-strpos($egypt,'.')-1);
$egypt_out= $numyears.'/'.$month.'/'.$daynum.' '.$day.'.'.
floor(intval(substr($timer,0,2))/100*$timeset['hours']).':'.
floor(intval(substr($timer,2,2))/100*$timeset['minutes']).':'.
floor(intval(substr($timer,4,2))/100*$timeset['seconds']).'.'.
substr($timer,6,strlen($timer)-6);
$egypt_obj = array('year'=>$numyears,
'month'=>$month,
'mname' => $monthnames[$sequence][$month-1],
'day'=>$daynum,
'jtl'=>$jtl,
'day_count'=>$day,
'hours'=>floor(intval(substr($timer,0,2))/100
*$timeset['hours']),
'minute'=>floor(intval(substr($timer,2,2))/100
*$timeset['minutes']),
'seconds'=>floor(intval(substr($timer,4,2))/100
*$timeset['seconds']),
'microtime'=>substr($timer,6,strlen($timer)-6),
'strout'=>$egypt_out);

return
$egypt_obj;
}

?>

顺便说一下,在我之前关于玛雅提卡尔历法帖子的代码中,函数的顶部部分在我的代码剪切粘贴中被切掉了,那就是函数的代码行,看起来像,前 3 行需要用以下内容替换

<?php

print_r
(MayanTikalCalendar(time(),0));

function
MayanTikalCalendar($unix_time, $gmt,

?>
amichauer at gmx dot de
19 年前
<?php

class HijriCalendar
{
function
monthName($i) // $i = 1..12
{
static
$month = array(
"M?x?rr?m", "Safar", "Rabig-?l-?ww?l", "Rabig-?l-Ax?r",
"C?m?d-?l-?ww?l", "C?m?d-?l-Ax?r", "Rac?b", "???b?n",
"Ramazan", "??w?l", "Z?-?l-Q??d?", "Z?-?l-Xicc?"
);
return
$month[$i-1];
}

function
GregorianToHijri($time = null)
{
if (
$time === null) $time = time();
$m = date('m', $time);
$d = date('d', $time);
$y = date('Y', $time);

return
HijriCalendar::JDToHijri(
cal_to_jd(CAL_GREGORIAN, $m, $d, $y));
}

function
HijriToGregorian($m, $d, $y)
{
return
jd_to_cal(CAL_GREGORIAN,
HijriCalendar::HijriToJD($m, $d, $y));
}

# 朱利安日计数转为伊斯兰历
function JDToHijri($jd)
{
$jd = $jd - 1948440 + 10632;
$n = (int)(($jd - 1) / 10631);
$jd = $jd - 10631 * $n + 354;
$j = ((int)((10985 - $jd) / 5316)) *
((int)(
50 * $jd / 17719)) +
((int)(
$jd / 5670)) *
((int)(
43 * $jd / 15238));
$jd = $jd - ((int)((30 - $j) / 15)) *
((int)((
17719 * $j) / 50)) -
((int)(
$j / 16)) *
((int)((
15238 * $j) / 43)) + 29;
$m = (int)(24 * $jd / 709);
$d = $jd - (int)(709 * $m / 24);
$y = 30*$n + $j - 30;

return array(
$m, $d, $y);
}

# 伊斯兰历转为朱利安日计数
function HijriToJD($m, $d, $y)
{
return (int)((
11 * $y + 3) / 30) +
354 * $y + 30 * $m -
(int)((
$m - 1) / 2) + $d + 1948440 - 385;
}
};

$hijri = HijriCalendar::GregorianToHijri(time() );
echo
$hijri[1].'. '.HijriCalendar::monthName($hijri[0]).' '.$hijri[2];

?>
simon at chronolabs dot org dot au
16 年前
<?php

// 您需要在埃及日历函数和玛雅 Tihkal 日历函数中替换此部分
// 以及函数 MayanTihkalCalendar
$revolutionsperyear = $ttl_num / $i;
$numyears = floor((ceil($roun) / $revolutionsperyear));
$avg_num_month = $ttl_num_months/$i;
$jtl = abs(abs($roun) - ceil($revolutionsperyear*($numyears+1)));
while(
$month==0){
$day=0;
$u=0;
foreach(
$monthusage as $key => $item){
$t=0;
foreach(
$item as $numdays){
$t++;
$tt=0;
for(
$sh=1;$sh<=$numdays;$sh++){
$ii=$ii+1;
$tt++;
if (
$ii==floor($jtl)){
if (
$roun<0){
$daynum = $tt;
$month = $t;
} else {
$daynum = $numdays-($tt-1);
$month = $avg_num_month-($t-1);
}
$sequence = $key;
$nodaycount=true;
}
}
if (
$nodaycount==false)
$day++;
}
$u++;
}
}
?>

这段代码需要在计算中进行更改,我今天注意到在我们的 RounCalendar 中有一个零天,此函数将正确计算日历的月份和日期,这是一个非常通用的代码,抱歉没有经过充分测试,需要一些重构。
simon at chronolabs dot org dot au
16 年前
这将返回玛雅长计数日历,该日历的周期在 2012 年达到 13.0.0.0.0,我不得不为这个代码库压缩 changemaya 函数,所以如果你想将它间隔开,你很受欢迎。它与 Unix 时间一起使用。要调用该例程,请使用以下语法。玛雅日历是一个大约 5000 年的历史的日历,它记录了我们在银河系中的天体位置。

<?php

echo MayanLongCount(time());

function
MayanLongCount($tme){

$config = array('ppo' => array(13,0,0,0,0),
'epoch' => strtotime('2012-12-21'));

$diff=(($tme-$config['epoch'])/(60*60*24));
$ppo = changemaya($config['ppo'],ceil($diff));

return
$ppo[0].'.'.$ppo[1].'.'.$ppo[2].'.'.$ppo[3].'.'.$ppo[4];
}

function
changemaya($ppo,$diff){
if (
$diff>0) { $amount=1; } else { $amount=-1; }
for (
$sh=1;$sh<abs($diff);$sh++){ if ($ppo[4]+$amount>20){
if (
$ppo[3]+$amount>20){ if ($ppo[2]+$amount>20){
if (
$ppo[1]+$amount>20){ if ($ppo[0]+$amount>20){
$ppo[0]=0; $ppo[1]=0; $ppo[2]=0; $ppo[3]=0; $ppo[4]=0;
} else {
$ppo[1]=0; $ppo[0]=$ppo[0]+$amount;}
} else {
$ppo[2]=0; $ppo[1]=$ppo[1]+$amount; }
} else {
$ppo[3]=0; $ppo[2]=$ppo[2]+$amount; }
} else {
$ppo[4]=0; $ppo[3]=$ppo[3]+$amount; }
} elseif (
$ppo[4]+$amount<0){ if ($ppo[3]+$amount<0){
if (
$ppo[2]+$amount<0){ if ($ppo[1]+$amount<0){
if (
$ppo[0]+$amount<0){ $ppo[0]=20; $ppo[1]=0;
$ppo[2]=0; $ppo[3]=0; $ppo[4]=0;
} else {
$ppo[1]=20; $ppo[0]=$ppo[0]+$amount; }
} else {
$ppo[2]=20; $ppo[1]=$ppo[1]+$amount; }
} else {
$ppo[3]=20; $ppo[2]=$ppo[2]+$amount; }
} else {
$ppo[4]=20; $ppo[3]=$ppo[3]+$amount; }
} else {
$ppo[4]=$ppo[4]+$amount;}}
return
$ppo;
}

?>

谢谢!
curlee at mindspring dot com
20 年前
我解决了一个与 JD Edwards ERP 软件包(在 AS/400 上运行)中使用的儒略日期有关的问题。该系统中的儒略格式如下:CYYDDD

其中 C 在 1900 年为 0,在 2000 年为 1
DDD 是年的天数计数

我使用 mktime 内置的 php 函数将日期转换为正常的 DD/MM/YYYY 格式。此函数将转换 1970 年到 2038 年之间的日期(unix 时间戳和 mktime 函数的限制)

$jde_date 变量需要是一个长度为 6 的字符串.... 如果您使用的是数值变量类型,它将删除任何表示 1900 年的日期的前导 0.... 这将破坏 substr 函数,从而导致整个过程出错。

<?php
function jde_date_conv($jde_date)
{

$ct = substr($jde_date,0,1);
$yr = substr($jde_date,1,2);
$dy = substr($jde_date,3,3);

if(
$ct == 0) $yr_pfx = 19;
if(
$ct == 1) $yr_pfx = 20;

$tlt_yr = $yr_pfx.$yr;

$base_time = mktime(0,0,0,1,0,$tlt_yr);

$unix_time = ($dy * 86400) + $base_time;

return
date("m/d/Y" , $unix_time);
}
?>
simon at chronolabs dot org dot au
16 年前
这是第二部分,更确切地说是玛雅蒂卡尔的第二个日历,它们有两个,一个用于长计数,一个用于一般日期播种,这是使用浮点时间实现(roun)。

<?php

$maya
= MayanTikalCalendar(time(),0);

print_r($maya);

$poffset = '2012-12-21 8:24 PM',
$pweight = '-1872000.22222222223',
$defiency='nonedeficient',
$timeset= array("hours" => 24,
"minutes" => 60,
"seconds" => 60))
{
// Code Segment 1 – Calculate Floating Point
$tme = $unix_time;
if (
$gmt>0){ $gmt=-$gmt; } else { $gmt=abs($gmt); }

$ptime = strtotime($poffset)+(60*60*gmt);
$maya_xa = ($tme)/(24*60*60);
$maya_ya = $ptime/(24*60*60);
$maya = (($maya_xa -$maya_ya) - $pweight)+(microtime/999999);

// Code Segment 2 – Set month day arrays
$nonedeficient = array(
"seq1" => array(20,20,20,20,20,20,20,20,20,
20,20,20,20,20,20,20,20,20,5));

$monthnames = array("seq1" => array(
'Pop', 'Uo', 'Zip', 'Zot\'z', 'Tzec', 'Xul',
'Yaxkin', 'Mol', 'Ch\'en', 'Yax', 'Zac', 'Ceh',
'Mac', 'Kankin', 'Muan', 'Pax', 'Kayab',
'Cumku', 'Uayeb'));
$daynames = array("seq1" => array(
'Imix', 'Ik', 'Akbal', 'Kan', 'Chicchan',
'Cimi','Manik', 'Lamat', 'Muluc', 'Oc',
'Chuen', 'Eb', 'Ben', 'Ix', 'Men',
'Cib', 'Caban', 'Etz\'nab', 'Cauac', 'Ahau'));
$monthusage = isset($defiency) ? ${$defiency} : $deficient;

// Code Segment 3 – Calculate month number, day numbers etc
foreach($monthusage as $key => $item){
$i++;
foreach(
$item as $numdays){
$ttl_num=$ttl_num+$numdays;
$ttl_num_months++;
}
}

$revolutionsperyear = $ttl_num / $i;
$numyears = (round((floor($maya) / $revolutionsperyear),0));
$avg_num_month = $ttl_num_months/$i;
$jtl = abs(abs($maya) -
ceil($revolutionsperyear*($numyears+1)));

while(
$month==0){
$day=0;
$u=0;
foreach(
$monthusage as $key => $item){
$t=0;
foreach(
$item as $numdays){
$t++;
$tt=0;
for(
$sh=1;$sh<=$numdays;$sh++){
$ii=$ii+1;
$tt++;
if (
$ii==floor($jtl)){
if (
$maya>0){
$daynum = $tt;
$month = $t;
} else {
$daynum = $numdays-$tt;
$month = $avg_num_month-$t;
}
$sequence = $key;
$nodaycount=true;
}
}
if (
$nodaycount==false)
$day++;
}
$u++;
}
}

$timer = substr($maya, strpos($maya,'.')+1,
strlen($maya)-strpos($maya,'.')-1);
$maya_out= $numyears.'/'.$month.'/'.$daynum.' '.$day.'.'.
floor(intval(substr($timer,0,2))/100*$timeset['hours']).':'.
floor(intval(substr($timer,2,2))/100*$timeset['minutes']).':'.
floor(intval(substr($timer,4,2))/100*$timeset['seconds']).'.'.
substr($timer,6,strlen($timer)-6);

$maya_obj = array(
'longcount'=>MayanLongCount($tme),'year'=>abs($numyears),
'month'=>$month, 'mname' => $monthnames[$sequence][$month-1],
'day'=>$daynum, 'dayname'=>$daynames[$sequence][$daynum-1],
'day'=>$daynum, 'jtl'=>$jtl, 'day_count'=>$day,
'hours'=> floor(intval(substr($timer,0,2))/100
*$timeset['hours']),
'minute'=> floor(intval(substr($timer,2,2))/100
*$timeset['minutes']),
'seconds'=>floor(intval(substr($timer,4,2))/100
*$timeset['seconds']),
'microtime'=>substr($timer,6,strlen($timer)-6),
'strout'=>$maya_out);

return
$maya_obj;
}

?>
Anonymous
2 年前
<?php

class HijriCalendar
{
public static function
monthName($i) // $i = 1..12
{
static
$month = array(
"Moharram", "Safar", "Rabii-I", "Rabii-II",
"Jumada-I", "Jumada-II", "Rajab", "Chaaban",
"Ramadan", "Chawal", "Dhu-al-Qiida", "Dhu-al-Hijja"
);
return
$month[$i-1];
}

public static function
GregorianToHijri($time = null)
{
if (
$time === null) $time = time();
$m = date('m', $time);
$d = date('d', $time);
$y = date('Y', $time);

return
HijriCalendar::JDToHijri(
cal_to_jd(CAL_GREGORIAN, $m, $d, $y));
}

public static function
HijriToGregorian($m, $d, $y)
{
return
jd_to_cal(CAL_GREGORIAN,
HijriCalendar::HijriToJD($m, $d, $y));
}

# 朱利安日数到伊斯兰历
public static function JDToHijri($jd)
{
$jd = $jd - 1948440 + 10632;
$n = (int)(($jd - 1) / 10631);
$jd = $jd - 10631 * $n + 354;
$j = ((int)((10985 - $jd) / 5316)) *
((int)(
50 * $jd / 17719)) +
((int)(
$jd / 5670)) *
((int)(
43 * $jd / 15238));
$jd = $jd - ((int)((30 - $j) / 15)) *
((int)((
17719 * $j) / 50)) -
((int)(
$j / 16)) *
((int)((
15238 * $j) / 43)) + 29;
$m = (int)(24 * $jd / 709);
$d = $jd - (int)(709 * $m / 24);
$y = 30*$n + $j - 30;

return array(
$m, $d, $y);
}

# 伊斯兰历到朱利安日数
public static function HijriToJD($m, $d, $y)
{
return (int)((
11 * $y + 3) / 30) +
354 * $y + 30 * $m -
(int)((
$m - 1) / 2) + $d + 1948440 - 385;
}
};

$hijri = HijriCalendar::GregorianToHijri( time() );
echo
$hijri[1].'. '.HijriCalendar::monthName($hijri[0]).' '.$hijri[2];

?>
To Top