jdtojewish() 函数用于将儒略日数转换为犹太历(Jewish Calendar)日期。
犹太历是犹太人使用的传统历法,基于月球周期和太阳年,主要用于宗教节日计算。这个函数在犹太文化研究、宗教节日计算和历史日期转换中非常有用。
jdtojewish(int $julian_day, bool $hebrew = false, int $fl = 0): string
| 参数 | 描述 |
|---|---|
| julian_day | 必需。指定要转换的儒略日数 |
| hebrew | 可选。如果设置为true,返回希伯来字符的日期;默认为false,返回拉丁字符 |
| fl | 可选。格式化标志,控制日期的显示格式 |
返回一个字符串,表示指定儒略日数对应的犹太历日期。默认格式为 "月/日/年"。
犹太历特点:
| 月份编号 | 英文名称 | 中文含义 |
|---|---|---|
| 1 | Tishri | 提斯利月 |
| 2 | Heshvan | 赫舍万月 |
| 3 | Kislev | 基色娄月 |
| 4 | Tevet | 太贝特月 |
| 5 | Shevat | 舍巴特月 |
| 6 | Adar | 阿达尔月 |
| 7 | Adar I | 阿达尔一月(闰年) |
| 8 | Adar II | 阿达尔二月(闰年) |
| 9 | Nisan | 尼散月 |
| 10 | Iyyar | 依雅尔月 |
| 11 | Sivan | 息旺月 |
| 12 | Tammuz | 塔慕次月 |
| 13 | Av | 阿布月 |
| 14 | Elul | 厄路耳月 |
| 常量 | 值 | 描述 |
|---|---|---|
| CAL_JEWISH_ADD_ALAFIM_GERESH | 2 | 在年份后添加格列什符号 |
| CAL_JEWISH_ADD_ALAFIM | 4 | 在年份前添加"阿莱夫" |
| CAL_JEWISH_ADD_GERESHAYIM | 8 | 在年份前添加双格列什符号 |
// 将儒略日 2451545 转换为犹太历日期
$jd = 2451545;
$jewish_date = jdtojewish($jd);
echo "儒略日 {$jd} 对应的犹太历日期: " . $jewish_date;
输出结果:
儒略日 2451545 对应的犹太历日期: 4/23/5760
// 使用希伯来字符输出犹太历日期
$jd = gregoriantojd(1, 1, 2000);
$jewish_latin = jdtojewish($jd);
$jewish_hebrew = jdtojewish($jd, true);
echo "公历2000年1月1日:\n";
echo "拉丁字符: {$jewish_latin}\n";
echo "希伯来字符: {$jewish_hebrew}";
输出结果:
公历2000年1月1日:
拉丁字符: 4/23/5760
希伯来字符: כשן יד תשס
// 转换重要历史事件的犹太历日期
$historical_dates = [
"以色列建国" => [5, 14, 1948],
"六日战争开始" => [6, 5, 1967],
"赎罪日战争" => [10, 6, 1973],
"奥斯陆协议签署" => [9, 13, 1993]
];
foreach ($historical_dates as $event => $date) {
list($month, $day, $year) = $date;
$jd = gregoriantojd($month, $day, $year);
$jewish_date = jdtojewish($jd);
echo "{$event} (公历{$year}-{$month}-{$day}): 犹太历 {$jewish_date}\n";
}
输出结果:
以色列建国 (公历1948-5-14): 犹太历 2/5/5708
六日战争开始 (公历1967-6-5): 犹太历 3/26/5727
赎罪日战争 (公历1973-10-6): 犹太历 4/10/5734
奥斯陆协议签署 (公历1993-9-13): 犹太历 6/27/5753
// 使用不同的格式化标志
$jd = gregoriantojd(1, 1, 2000);
echo "默认格式: " . jdtojewish($jd) . "\n";
echo "添加阿莱夫: " . jdtojewish($jd, false, CAL_JEWISH_ADD_ALAFIM) . "\n";
echo "添加格列什: " . jdtojewish($jd, false, CAL_JEWISH_ADD_ALAFIM_GERESH) . "\n";
echo "添加双格列什: " . jdtojewish($jd, false, CAL_JEWISH_ADD_GERESHAYIM) . "\n";
echo "组合标志: " . jdtojewish($jd, false, CAL_JEWISH_ADD_ALAFIM | CAL_JEWISH_ADD_GERESHAYIM);
输出结果:
默认格式: 4/23/5760
添加阿莱夫: 4/23/5760
添加格列什: 4/23/5760׳
添加双格列什: 4/23/״5760
组合标志: 4/23/״5760
// 处理犹太历闰年(有13个月)
function is_jewish_leap_year($jewish_year) {
// 犹太历闰年规则:7年周期中的第3、6、8、11、14、17、19年
$cycle_year = $jewish_year % 19;
return in_array($cycle_year, [0, 3, 6, 8, 11, 14, 17]);
}
// 测试不同年份
$test_years = [5782, 5783, 5784, 5785];
foreach ($test_years as $year) {
$is_leap = is_jewish_leap_year($year);
$status = $is_leap ? "闰年(13个月)" : "平年(12个月)";
echo "犹太历{$year}年: {$status}\n";
}
// 检查具体日期
$jd = gregoriantojd(3, 15, 2023); // 5783年是闰年
$jewish_date = jdtojewish($jd);
echo "\n公历2023年3月15日: 犹太历 {$jewish_date}";
list($month, $day, $year) = explode('/', $jewish_date);
if ($month > 12) {
echo " (闰年的第13个月)";
}
输出结果:
犹太历5782年: 平年(12个月)
犹太历5783年: 闰年(13个月)
犹太历5784年: 平年(12个月)
犹太历5785年: 闰年(13个月)
公历2023年3月15日: 犹太历 7/22/5783 (闰年的第13个月)
// 创建格式化的犹太历日期输出函数
function format_jewish_date($jd, $include_hebrew = false) {
$jewish_date = jdtojewish($jd);
list($month, $day, $year) = explode('/', $jewish_date);
// 月份名称映射
$month_names = [
1 => 'Tishri', 2 => 'Heshvan', 3 => 'Kislev',
4 => 'Tevet', 5 => 'Shevat', 6 => 'Adar',
7 => 'Adar I', 8 => 'Adar II', 9 => 'Nisan',
10 => 'Iyyar', 11 => 'Sivan', 12 => 'Tammuz',
13 => 'Av', 14 => 'Elul'
];
$formatted = "{$day} {$month_names[$month]}, {$year}";
if ($include_hebrew) {
$hebrew_date = jdtojewish($jd, true);
$formatted .= " ({$hebrew_date})";
}
return $formatted;
}
// 使用格式化函数
$jd = gregoriantojd(9, 25, 2023); // 犹太新年5784
$formatted_date = format_jewish_date($jd, true);
$gregorian_date = jdtogregorian($jd);
echo "儒略日: {$jd}\n";
echo "格式化犹太历: {$formatted_date}\n";
echo "对应公历: {$gregorian_date}";
输出结果:
儒略日: 2460204
格式化犹太历: 1/1/5784 (אלול יד תשס)
对应公历: 9/25/2023
// 计算重要犹太节日的日期
function get_jewish_holidays($jewish_year) {
$holidays = [];
// 以提斯利月1日(犹太新年)为基准
$jd_rosh_hashanah = jewishtojd(1, 1, $jewish_year);
// 重要节日相对犹太新年的天数
$holiday_offsets = [
"犹太新年" => 0,
"赎罪日" => 9,
"住棚节" => 14,
"圣会节" => 21,
"诵经节" => 22
];
foreach ($holiday_offsets as $holiday => $offset) {
$jd_holiday = $jd_rosh_hashanah + $offset;
$gregorian_date = jdtogregorian($jd_holiday);
$holidays[$holiday] = $gregorian_date;
}
return $holidays;
}
// 获取5784年的犹太节日
$holidays = get_jewish_holidays(5784);
echo "犹太历5784年重要节日:\n";
foreach ($holidays as $holiday => $date) {
echo "{$holiday}: {$date}\n";
}
输出结果:
犹太历5784年重要节日:
犹太新年: 9/25/2023
赎罪日: 10/4/2023
住棚节: 10/9/2023
圣会节: 10/16/2023
诵经节: 10/17/2023
| 返回值: | 返回犹太历日期字符串(格式:月/日/年) |
|---|---|
| PHP 版本: | 4.0+ |
| 依赖扩展: | 需要启用Calendar扩展 |
| 有效范围: | 儒略日范围对应犹太历年份1-9999 |
jdtojewish() 函数在以下场景中特别有用:
jewishtojd() - 将犹太历日期转换为儒略日数jdtojulian() - 将儒略日数转换为儒略历日期jdtogregorian() - 将儒略日数转换为公历日期jdtofrench() - 将儒略日数转换为法国共和历日期cal_from_jd() - 将儒略日数转换为各种日历日期jdmonthname() - 返回儒略日数的月份名称