PHP frenchtojd() 函数

定义和用法

frenchtojd() 函数用于将法国共和历(French Republican Calendar)日期转换为儒略日数。

法国共和历是法国大革命期间采用的历法,使用时间为1793年至1805年。这个函数在历史研究、历法转换和法国历史相关应用中非常有用。

语法

frenchtojd(int $month, int $day, int $year): int
参数 描述
month 必需。指定法国共和历的月份,范围1-13
day 必需。指定法国共和历的天数,范围1-30
year 必需。指定法国共和历的年份,范围1-14

返回值

返回一个整数,表示指定法国共和历日期对应的儒略日数。如果参数无效,返回0。

法国共和历背景

法国共和历特点:

  • 每年12个月,每月30天
  • 每年额外有5-6个补充日(闰年)
  • 月份名称基于自然现象和农业活动
  • 使用年份从1792年9月22日(共和国成立)开始计算
  • 实际使用时间:1793-1805年

法国共和历月份

月份编号 法语名称 中文含义
1Vendémiaire葡月
2Brumaire雾月
3Frimaire霜月
4Nivôse雪月
5Pluviôse雨月
6Ventôse风月
7Germinal芽月
8Floréal花月
9Prairial牧月
10Messidor获月
11Thermidor热月
12Fructidor果月
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日(罗伯斯庇尔倒台)

// 法国共和历二年热月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

注意事项

  • 需要确保PHP的Calendar扩展已启用
  • 法国共和历只在1793-1805年间实际使用
  • 年份范围限制为1-14(对应公历1792-1805)
  • 每月固定30天,第13个月为补充日(5-6天)
  • 补充日的具体天数取决于是否为闰年
  • 在处理历史日期时需要注意历法变更

实际应用场景

frenchtojd() 函数在以下场景中特别有用:

  • 法国历史研究和文献整理
  • 历法系统比较和研究
  • 历史日期转换工具
  • 教育软件和历法学习工具
  • 法国大革命时期的历史研究

相关函数

  • jdtofrench() - 将儒略日数转换为法国共和历日期
  • gregoriantojd() - 将公历日期转换为儒略日数
  • juliantojd() - 将儒略历日期转换为儒略日数
  • jdtogregorian() - 将儒略日数转换为公历日期
  • cal_to_jd() - 将各种日历日期转换为儒略日数