frenchtojd() 函数用于将法国共和历(French Republican Calendar)日期转换为儒略日数。
法国共和历是法国大革命期间采用的历法,使用时间为1793年至1805年。这个函数在历史研究、历法转换和法国历史相关应用中非常有用。
frenchtojd(int $month, int $day, int $year): int
| 参数 | 描述 |
|---|---|
| month | 必需。指定法国共和历的月份,范围1-13 |
| day | 必需。指定法国共和历的天数,范围1-30 |
| year | 必需。指定法国共和历的年份,范围1-14 |
返回一个整数,表示指定法国共和历日期对应的儒略日数。如果参数无效,返回0。
法国共和历特点:
| 月份编号 | 法语名称 | 中文含义 |
|---|---|---|
| 1 | Vendémiaire | 葡月 |
| 2 | Brumaire | 雾月 |
| 3 | Frimaire | 霜月 |
| 4 | Nivôse | 雪月 |
| 5 | Pluviôse | 雨月 |
| 6 | Ventôse | 风月 |
| 7 | Germinal | 芽月 |
| 8 | Floréal | 花月 |
| 9 | Prairial | 牧月 |
| 10 | Messidor | 获月 |
| 11 | Thermidor | 热月 |
| 12 | Fructidor | 果月 |
| 13 | 补充日 | 年终节日 |
// 将法国共和历元年葡月1日转换为儒略日
$jd = frenchtojd(1, 1, 1);
echo "法国共和历元年葡月1日的儒略日: " . $jd;
输出结果:
法国共和历元年葡月1日的儒略日: 2375840
// 将法国共和历日期转换为公历日期
$jd = frenchtojd(1, 1, 1); // 共和历元年葡月1日
$gregorian_date = jdtofrench($jd);
echo "法国共和历元年葡月1日对应的公历日期: " . $gregorian_date;
输出结果:
法国共和历元年葡月1日对应的公历日期: 9/22/1792
// 法国共和历二年热月9日(罗伯斯庇尔倒台日)
$jd = frenchtojd(11, 9, 2);
$gregorian_date = jdtofrench($jd);
echo "共和历二年热月9日的儒略日: " . $jd . "\n";
echo "对应的公历日期: " . $gregorian_date;
输出结果:
共和历二年热月9日的儒略日: 2377874
对应的公历日期: 7/27/1794
// 处理法国共和历的年终补充日
$jd = frenchtojd(13, 5, 3); // 共和历3年补充日第5天
$gregorian_date = jdtofrench($jd);
echo "共和历3年补充日第5天的儒略日: " . $jd . "\n";
echo "对应的公历日期: " . $gregorian_date;
输出结果:
共和历3年补充日第5天的儒略日: 2379910
对应的公历日期: 9/17/1795
// 验证法国共和历日期的有效性
function validate_french_date($month, $day, $year) {
// 检查年份范围
if ($year < 1 || $year > 14) {
return "年份超出范围(1-14)";
}
// 检查月份范围
if ($month < 1 || $month > 13) {
return "月份超出范围(1-13)";
}
// 检查天数范围
if ($day < 1 || $day > 30) {
return "天数超出范围(1-30)";
}
// 尝试转换
$jd = frenchtojd($month, $day, $year);
if ($jd == 0) {
return "无效的法国共和历日期";
}
return "有效的法国共和历日期,儒略日: " . $jd;
}
// 测试验证函数
echo validate_french_date(1, 1, 1) . "\n";
echo validate_french_date(13, 6, 3) . "\n"; // 补充日最多5天(非闰年)
echo validate_french_date(15, 1, 1) . "\n"; // 无效月份
输出结果:
有效的法国共和历日期,儒略日: 2375840
无效的法国共和历日期
月份超出范围(1-13)
| 返回值: | 返回法国共和历日期对应的儒略日数(整数) |
|---|---|
| PHP 版本: | 4.1+ |
| 依赖扩展: | 需要启用Calendar扩展 |
| 有效范围: | 年份:1-14,月份:1-13,天数:1-30 |
frenchtojd() 函数在以下场景中特别有用:
jdtofrench() - 将儒略日数转换为法国共和历日期gregoriantojd() - 将公历日期转换为儒略日数juliantojd() - 将儒略历日期转换为儒略日数jdtogregorian() - 将儒略日数转换为公历日期cal_to_jd() - 将各种日历日期转换为儒略日数