PHP 日本大会 2024

jdtofrench

(PHP 4, PHP 5, PHP 7, PHP 8)

jdtofrench将儒略日数转换为法国共和历

描述

jdtofrench(int $julian_day): string

将儒略日数转换为法国共和历。

参数

julian_day

一个整数形式的儒略日数

返回值

以 "月/日/年" 格式表示的法国革命日期字符串

参见

添加备注

用户贡献的备注 4 条备注

pieterc dot depraetere at ugent dot be
14 年前
如果您想转换 1806 年 9 月 22 日之后的日期,您可以使用此函数。它有点粗糙,由于原始函数在 1806 年中旬终止,它使用 1805 年作为其“终止后日期”。
<?php
function extended_jdtofrench ($juliandate) {
if (
$juliandate > 2380945) {
// jdtofrench () 只接受直到 1806 年 9 月的日期
$gregorian_date = jdtogregorian ($juliandate);
$temp = explode ('/', $gregorian_date);
$year = $temp[2];
$juliandate = gregoriantojd ($temp[0], $temp[1], 1805);
$republican_date = jdtofrench ($juliandate);
$republican_date = explode ('/', $republican_date);
$diff = $year - 1805;
$republican_date[2] = $republican_date[2] + $diff;
} else {
$republican_date = jdtofrench ($juliandate);
}
return
$republican_date;
}
?>
squenz at titania dot bottoms-dream dot de
18 年前
这是一小段代码,用于获取正确转换的格里高利日期的字符串数据

<?php
$arDateFrench
= gregorian2FrenchDateArray(11, 9, 1799) ;

echo
$arDateFrench[1] . " " . $arDateFrench[0] . " " . $arDateFrench[2] ;

/* 输出结果为:
18 霜月 八

*/

function gregorian2FrenchDateArray($m, $d, $y)
{

$julian_date = gregoriantojd($m, $d, $y);
$french = jdtofrench($julian_date);
if(
$french == "0/0/0")
return
"" ;

$arD = split("/", $french) ;

// 获取月份名称
$monthname = FrenchMonthNames($arD[0]) ;

/* 将年份数字转换为罗马数字(大多数历史学家和当时的文献都是这么做的)*/
$stryear = decrom($arD[2]) ;
return array(
$monthname, $arD[1], $stryear ) ;
}

function
FrenchMonthNames($mo)
{
/* 这些名称是由法布尔·德·埃格朗廷(Fabre d'Églantine)创造的,他是一位二流或三流的诗人,主要创作田园诗,每个名称都指农业年中相应的时期;例如,“Vendémiaire”(约9月)源自“vendange”(“收割”),“Brumaire”(10月/11月)源自“brume”(“雾”)等等……*/


$arMo = array("Vendémiaire",
"Brumaire",
"Frimaire",
"Nivôse",
"Pluviôse",
"Ventôse",
"Germinal",
"Floréal",
"Prairial",
"Messidor",
"Thermidor",
"Fructidor",
"Sansculottide") ;

if(
$mo < count($arMo)+1)
return
$arMo[$mo-1] ;

}

function
decrom($dec){
$digits=array(
1 => "I",
4 => "IV",
5 => "V",
9 => "IX",
10 => "X",
40 => "XL",
50 => "L",
90 => "XC",
100 => "C",
400 => "CD",
500 => "D",
900 => "CM",
1000 => "M"
);
krsort($digits);
$retval="";
foreach(
$digits as $key => $value){
while(
$dec>=$key){
$dec-=$key;
$retval.=$value;
}
}
return
$retval;
}
?>
popy-dev
6年前
另请注意,很少有日期转换器处理`jdtofrench`涵盖范围之外的法兰西历。
serged at noos dot fr
21年前
功能非常有限

(摘自4.3.3版本源码)
这些例程仅转换公元1年到14年之间的日期(格里高利历1792年9月22日至1806年9月22日)。这已经涵盖了该历法使用的时期。

对于法语用户
这些例程仅转换公元1年到14年之间的日期(格里高利历1792年9月22日至1806年9月22日)。这已经涵盖了该历法使用的时期。
To Top